Миксины для одного объекта ¶
SingleObjectMixin
¶
-
класс
django.views.generic.detail.
SingleObjectMixin
¶ Предоставляет механизм поиска объекта, связанного с текущим HTTP-запросом.
Методы и атрибуты
-
model
¶ Модель, для которой это представление будет отображать данные. Указание фактически то же самое, с указанием , где выступает за «s менеджера по умолчанию .
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
предоставляется, этот набор запросов будет использоваться как источник объектов; в противном случаеget_queryset()
будет использоваться.get_object()
ищетpk_url_kwarg
аргумент в аргументах представления; если этот аргумент найден, этот метод выполняет поиск на основе первичного ключа, используя это значение. Если этот аргумент не найден, он ищетslug_url_kwarg
аргумент и выполняет поиск слага с использованиемslug_field
.Когда
query_pk_and_slug
естьTrue
,get_object()
поиск будет выполняться с использованием как первичного ключа, так и слага.
-
get_queryset
() ¶ Возвращает набор запросов, который будет использоваться для получения объекта, отображаемого в этом представлении. По умолчанию
get_queryset()
возвращает значениеqueryset
атрибута, если он установлен, в противном случае он создаетQuerySet
, вызываяall()
метод вmodel
диспетчере атрибута по умолчанию.
-
get_context_object_name
( объект ) ¶ Верните имя переменной контекста, которая будет использоваться для хранения данных, которыми манипулирует это представление. Если
context_object_name
не задан, имя контекста будет построено наmodel_name
основе модели, из которой состоит набор запросов. Например, у модели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
¶
-
класс
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
- значение
-