Классы миксинов для одного объекта ¶
SingleObjectMixin
¶
-
класс
django.views.generic.detail.
SingleObjectMixin
¶ Предоставляет механизм для поиска объекта, связанного с текущим HTTP-запросом.
Методы и атрибуты
-
model
¶ Модель, для которой это представление будет отображать данные. Enter - это то же самое, что определить, где находится обработчик по умолчанию .
model = Foo
queryset = Foo.objects.all()
objects
Foo
-
queryset
¶ Объект,
QuerySet
представляющий объекты. При вводе значениеqueryset
перезаписывает указанное значениеmodel
.Предупреждение
queryset
- это атрибут класса с редактируемым значением , поэтому вы должны быть очень осторожны при его прямом использовании. Прежде чем использовать его, вызовите его методall()
или заставьте его выполнитьget_queryset()
клонирование фона.
-
slug_field
¶ Имя поля шаблона, содержащего заголовок. По умолчанию
slug_field
это'slug'
.
-
slug_url_kwarg
¶ Имя параметра, указанного в URL-адресе, содержащем заголовок. По умолчанию
slug_url_kwarg
это'slug'
.
-
pk_url_kwarg
¶ Имя параметра, указанного в URL-адресе, содержащем первичный ключ. По умолчанию
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
( obj ) ¶ Возвращает имя контекстной переменной, используемой для хранения данных, которыми манипулирует это представление. Если
context_object_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
экземпляра объекта, с которым работает представление (если доступно) <nom_app>/<nom_modèle><suffixe_gabarit>.html
- значение
-