Spec-Zone.ru › Django 5.1

Смеси для одиночных объектов

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 может иметь тот же эффект, но эта схема позволяет иметь не уникальные slug.

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

Spec-Zone.ru

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