Spec-Zone.ru › Django 1.8

Смеси для одиночных объектов

SingleObjectMixin

class django.views.generic.detail.SingleObjectMixin

Предоставляет механизм для поиска объекта, связанного с текущим HTTP-запросом.

Методы и атрибуты

model

Модель, для которой этот вид отобразит данные. Указание model = Foo фактически равно указанию queryset = Foo.objects.all(), где objects обозначает Foo стандартный менеджер.

queryset

Объект QuerySet, представляющий объекты. Если задано, значение queryset имеет приоритет над значением, указанным для model.

Предупреждение

queryset — это атрибут класса со изменяемым значением, поэтому при его непосредственном использовании следует проявлять осторожность. Перед использованием вызовите его метод all() или извлеките его с помощью get_queryset(), который позаботится о клонировании за кулисами.

slug_field

Имя поля в модели, содержащего сокращенное имя. По умолчанию slug_field — 'slug'.

slug_url_kwarg

Имя параметра ключевого слова URLConf, содержащего сокращенное имя. По умолчанию slug_url_kwarg — 'slug'.

pk_url_kwarg

Имя параметра ключевого слова URLConf, содержащего первичный ключ. По умолчанию pk_url_kwarg — 'pk'.

context_object_name

Определяет имя переменной для использования в контексте.

query_pk_and_slug

Если True, заставляет get_object() выполнять поиск по первичному ключу и сокращенному имени. По умолчанию False.

Этот атрибут может помочь смягчить атаки типа «небезопасная прямая ссылка на объект» https://www.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References. Когда приложения позволяют получить доступ к отдельным объектам по последовательному первичному ключу, злоумышленник может перебрать все URL-адреса, получив таким образом список всех объектов в приложении. Если пользователям с доступом к отдельным объектам следует запретить получение этого списка, установка query_pk_and_slug на True поможет предотвратить подбор URL-адресов, так как каждый URL-адрес потребует двух корректных, не последовательных аргументов. Использование уникального сокращенного имени может иметь такой же эффект, но эта схема позволяет иметь не уникальные сокращенные имена.

get_object(queryset=None)

Возвращает единственный объект, который этот вид отобразит. Если queryset задан, этот queryset будет использован в качестве источника объектов; в противном случае, используется get_queryset(). get_object() ищет параметр pk_url_kwarg в аргументах представления; если этот аргумент найден, этот метод выполняет поиск по первичному ключу, используя это значение. Если этот аргумент не найден, ищется параметр slug_url_kwarg, и выполняется поиск по сокращенному имени, используя slug_field.

Когда query_pk_and_slug равно True, get_object() выполнит поиск по первичному ключу и сокращенному имени.

get_queryset()

Возвращает queryset, который будет использоваться для извлечения объекта, который этот вид отобразит. По умолчанию get_queryset() возвращает значение атрибута queryset, если он задан, в противном случае он строит QuerySet вызывая метод all() у стандартного менеджера атрибута model.

get_context_object_name(obj)

Возвращает имя переменной контекста, которое будет использоваться для хранения данных, с которыми манипулирует этот вид. Если context_object_name не задано, имя контекста будет построено из model_name модели, из которой составлен queryset. Например, модель Article будет иметь имя контекстного объекта 'article'.

get_context_data(**kwargs)

Возвращает данные контекста для отображения списка объектов.

Базовая реализация этого метода требует, чтобы атрибут self.object был установлен представлением (даже если None). Убедитесь, что это сделано, если вы используете этот миксин без одного из встроенных представлений, которое это делает.

Он возвращает словарь с этим содержимым:

  • object: Объект, отображаемый этим представлением (self.object).
  • context_object_name: self.object также будет храниться под именем, возвращаемым get_context_object_name(), которое по умолчанию равно нижнему регистру имени модели.

Переменные контекста переопределяют значения из процессоров контекста шаблона

Любые переменные из get_context_data() имеют приоритет над переменными контекста из процессоров контекста. Например, если ваше представление устанавливает атрибут model на User, значение по умолчанию для имени контекстного объекта user будет переопределять переменную user из процессора контекста django.contrib.auth.context_processors.auth(). Используйте get_context_object_name() для предотвращения конфликта.

get_slug_field()

Возвращает имя поля сокращенного имени, которое будет использоваться для поиска по сокращенному имени. По умолчанию это просто возвращает значение slug_field.

SingleObjectTemplateResponseMixin

class django.views.generic.detail.SingleObjectTemplateResponseMixin

Класс-миксин, обеспечивающий отображение ответа на основе шаблона для представлений, работающих с экземпляром одного объекта. Требует, чтобы представление, к которому он применим, предоставило self.object, экземпляр объекта, с которым работает представление. self.object обычно, но не обязательно, является экземпляром модели Django. Он может быть None если представление находится в процессе создания нового экземпляра.

Расширяет

  • TemplateResponseMixin

Методы и атрибуты

template_name_field

Поле в текущем экземпляре объекта, которое можно использовать для определения имени кандидата шаблона. Если само template_name_field или значение template_name_field в текущем экземпляре объекта равно None, объект не будет использован для имени кандидата шаблона.

template_name_suffix

Суффикс, который нужно добавить к автоматически сгенерированному имени кандидата шаблона. По умолчанию суффикс _detail.

get_template_names()

Возвращает список имен кандидата шаблона. Возвращает следующий список:

  • значение template_name в представлении (если предоставлено)
  • содержимое поля template_name_field в экземпляре объекта, с которым работает представление (если доступно)
  • <app_label>/<model_name><template_name_suffix>.html

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.8/ref/class-based-views/mixins-single-object/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API