Смешанные типы для одного объекта
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/5.0/ref/class-based-views/mixins-single-object/