Смежные классы для обработки одного объекта
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предоставлен, этот объект будет использован в качестве источника объектов; в противном случае,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не установлено, имя контекста будет построено из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
-
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.9/ref/class-based-views/mixins-single-object/