Spec-Zone.ru › Django 1.9

Смежные классы для обработки одного объекта

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 , если представление находится в процессе создания нового экземпляра.

Расширяет

  • TemplateResponseMixin

Методы и атрибуты

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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API