Смеси для одиночных объектов
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.Этот атрибут может помочь смягчить атаки типа «небезопасная прямая ссылка на объект» https://www.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References. Когда приложения позволяют получить доступ к отдельным объектам по последовательному первичному ключу, злоумышленник может перебрать все 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не задано, имя контекста будет построено изmodel_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.8/ref/class-based-views/mixins-single-object/