Смеси для единственного объекта
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 может служить той же цели, но эта схема позволяет иметь не уникальные slugs.
-
get_object(queryset=None) -
Возвращает единственный объект, который будет отображать этот вид. Если
querysetзадано, этот queryset будет использоваться в качестве источника объектов; в противном случае, будет использоватьсяget_queryset().get_object()ищет аргументpk_url_kwargв аргументах представления; если этот аргумент найден, этот метод выполняет поиск по первичному ключу, используя это значение. Если этот аргумент не найден, он ищет аргументslug_url_kwargи выполняет поиск по slug, используяslug_field.Когда
query_pk_and_slugравноTrue,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/4.2/ref/class-based-views/mixins-single-object/