Смеси для единичных объектов
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.Этот атрибут может помочь смягчить атаки типа «небезопасная прямая ссылка на объект» (https://wiki.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References). Когда приложения позволяют доступ к отдельным объектам по последовательному первичному ключу, злоумышленник может перебрать все URL-адреса; тем самым получив список всех объектов в приложении. Если пользователям, имеющим доступ к отдельным объектам, следует запретить получение этого списка, установка
query_pk_and_slugнаTrueпоможет предотвратить подбор URL-адресов, так как каждый URL-адрес потребует двух корректных, не последовательных аргументов. Использование уникального slug может служить той же цели, но эта схема позволяет иметь не уникальные slug.
-
get_object(queryset=None) -
Возвращает единственный объект, который этот вид отобразит. Если
querysetпредоставлен, этотget_queryset()будет использован в качестве источника объектов; в противном случае будет использованget_object(). Этот метод ищет аргументpk_url_kwargв аргументах представления; если этот аргумент найден, этот метод выполняет поиск по первичному ключу, используя это значение. Если этот аргумент не найден, он ищет аргументslug_url_kwargи выполняет поиск по slug, используяslug_field.Когда
query_pk_and_slugравноTrue,get_object()выполнит поиск, используя как первичный ключ, так и slug.
-
get_queryset() -
Возвращает
get_queryset(), который будет использован для получения объекта, который этот вид отобразит. По умолчаниюquerysetвозвращает значение атрибутаQuerySet, если он задан; в противном случае он строитall()путём вызова методаmodelна стандартном менеджере атрибутаmodel.
-
get_context_object_name(obj) -
Возвращает имя переменной контекста, которое будет использоваться для хранения данных, которые обрабатывает этот вид. Если
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, которое будет использоваться для поиска по 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/4.1/ref/class-based-views/mixins-single-object/