Смешанные объекты одного типа
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, если представление находится в процессе создания нового экземпляра.Расширяет
Методы и атрибуты
-
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/