Spec-Zone.ru › Django 3.2

Смешанные объекты одного типа

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 задано, этот набор запросов будет использоваться в качестве источника объектов; в противном случае будет использоваться get_queryset(). get_object() ищет аргумент pk_url_kwarg в аргументах представления; если этот аргумент найден, этот метод выполняет поиск по первичному ключу, используя это значение. Если этот аргумент не найден, он ищет аргумент slug_url_kwarg и выполняет поиск по слагу, используя slug_field.

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

get_queryset()

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

get_context_object_name(obj)

Возвращает имя переменной контекста, которая будет использоваться для хранения данных, обрабатываемых этим представлением. Если context_object_name не задано, имя контекста будет сгенерировано из названия модели, из которой составлен набор запросов. Например, для модели 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/3.2/ref/class-based-views/mixins-single-object/

Spec-Zone.ru

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