Spec-Zone.ru › Django 5.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/5.2/ref/class-based-views/mixins-single-object/

Spec-Zone.ru

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