Spec-Zone.ru › Django 2.0

Смесины для одного объекта

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.

Этот атрибут может помочь снизить риск атак с использованием небезопасных прямых ссылок на объекты. Когда приложения разрешают доступ к отдельным объектам по последовательному первичному ключу, злоумышленник может перебрать все 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 не задано, имя контекста будет построено из названия модели, из которой составлен 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/2.0/ref/class-based-views/mixins-single-object/

Spec-Zone.ru

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