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

SingleObjectMixin

класс django.views.generic.detail.SingleObjectMixin

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

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

model

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

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( объект )

Верните имя переменной контекста, которая будет использоваться для хранения данных, которыми манипулирует это представление. Если context_object_nameне задан, имя контекста будет построено на model_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

класс django.views.generic.detail.SingleObjectTemplateResponseMixin

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

Расширяется

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

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

Copyright ©2021 All rights reserved