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

Spec-Zone.ru

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