Spec-Zone.ru › Django 4.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 не установлен, имя контекста будет построено из model_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/4.0/ref/class-based-views/mixins-single-object/

Spec-Zone.ru

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