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