Spec-Zone.ru › Django 6.0

Миксины одиночного объекта

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.

Расширяет

  • TemplateResponseMixin

Методы и атрибуты

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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API