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

Spec-Zone.ru

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