Смесины для одиночных объектов
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/5.2/ref/class-based-views/mixins-single-object/