Spec-Zone.ru › Django 4.2

Смеси для единственного объекта

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 если представление находится в процессе создания нового экземпляра.

Расширяет

  • 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/4.2/ref/class-based-views/mixins-single-object/

Spec-Zone.ru

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