Смеси для одиночных объектов
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если представление находится в процессе создания нового экземпляра.Расширяет
Методы и атрибуты
-
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/1.10/ref/class-based-views/mixins-single-object/