Смеси для одиночных объектов
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. По умолчанию,
slug_fieldэто'slug'.
-
slug_url_kwarg -
Имя ключевого аргумента URLConf, содержащего slug. По умолчанию,
slug_url_kwargэто'slug'.
-
pk_url_kwarg -
Имя ключевого аргумента URLConf, содержащего первичный ключ. По умолчанию,
pk_url_kwargэто'pk'.
-
context_object_name -
Определяет имя переменной для использования в контексте.
-
query_pk_and_slug -
Если
True, заставляетget_object()выполнять поиск, используя и первичный ключ, и slug. По умолчаниюFalse.Этот атрибут может помочь в защите от атак небезопасных прямых ссылок на объекты. Когда приложения допускают доступ к отдельным объектам по порядковому первичному ключу, злоумышленник может перебрать все URL-адреса, тем самым получив список всех объектов в приложении. Если пользователям, имеющим доступ к отдельным объектам, нужно запретить получение этого списка, установка
query_pk_and_slugвTrueпоможет предотвратить перебор URL-адресов, так как каждый URL будет требовать двух корректных, не последовательных аргументов. Использование уникального slug может иметь тот же эффект, но эта схема позволяет иметь не уникальные slug.
-
get_object(queryset=None) -
Возвращает единственный объект, который этот вид отобразит. Если
querysetзадано, этот queryset будет использован в качестве источника объектов; иначе используетсяget_queryset().get_object()ищет аргументpk_url_kwargв аргументах представления; если этот аргумент найден, этот метод выполняет поиск по первичному ключу, используя это значение. Если этот аргумент не найден, он ищет аргументslug_url_kwargи выполняет поиск по slug, используяslug_field.Когда
query_pk_and_slugTrue,get_object()будет выполнять поиск, используя и первичный ключ, и slug.
-
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, используемого для поиска по slug. По умолчанию это значение
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/5.1/ref/class-based-views/mixins-single-object/