Spec-Zone.ru › Django 5.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 указан, этот 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 в случае, если представление находится в процессе создания нового экземпляра.

Расширяет

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

Spec-Zone.ru

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