Смеси для одиночных объектов
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не установлен, имя контекста будет построено изmodel_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/4.0/ref/class-based-views/mixins-single-object/