Смеси для одиночных объектов
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если представление находится в процессе создания нового экземпляра.Расширяет
Методы и атрибуты
-
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.1/ref/class-based-views/mixins-single-object/