Миксины одиночного объекта
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, он будет использоваться в качестве источника объектов; в противном случае будет использоватьсяget_queryset(). Методget_object()ищет аргументpk_url_kwargсреди аргументов представления; если такой аргумент найден, этот метод выполняет поиск по первичному ключу, используя его значение. Если аргумент не найден, метод ищет аргументslug_url_kwargи выполняет поиск по слагу, используяslug_field.Если значение
query_pk_and_slugравноTrue, методget_object()выполняет поиск по первичному ключу и слагу.
-
get_queryset() -
Возвращает набор запросов, который будет использоваться для получения объекта, отображаемого этим представлением. По умолчанию
get_queryset()возвращает значение атрибутаqueryset, если он задан; в противном случае метод создаетQuerySet, вызывая методall()менеджера по умолчанию атрибута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_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/6.0/ref/class-based-views/mixins-single-object/