Смесины для одного объекта
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/2.0/ref/class-based-views/mixins-single-object/