Примеси для работы с одиночным объектом¶
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). По умолчанию,
slug_fieldэто'slug'.
- slug_url_kwarg¶
Имя переданного ключевого аргумента(именованной группы) в URLConf, содержащего значение слага(slug). По умолчанию,
slug_url_kwargэто'slug'.
- pk_url_kwarg¶
Имя переданного ключевого аргумента(именованной группы) в URLConf, содержащего значение первичного ключа(primary key). По умолчанию,
pk_url_kwargравен'pk'.
- context_object_name¶
Задает имя переменной для использования в текущем контексте.
- query_pk_and_slug¶
При
Trueметодget_object()ищет объект по первичному ключу и «слагу». По умолчаниюFalse.Этот атрибут может помочь предотвратить атаку на незащищенный прямой доступ к объектам. Если приложение предоставляет доступ к отдельным объектам через последовательный первичный ключ, атакующий может перебрать URL-ы и получить все объекты в приложении. Если пользователи не должны иметь доступ к списку всех объектов, то установка опции``query_pk_and_slug`` в
Trueпоможет предотвратить подбор URL-ов через первичный ключ, т.к. каждый URL будет требовать два правильных непоследовательных аргумента. Вы также можете просто использовать уникальный «slug» для этой цели, но такой подход позволяет вам работать с неуникальными «slug».
- 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()будет искать объект по первичному ключу и значению «slug».
- get_queryset()¶
Возвращает объект queryset, который буден использован для получения объекта для данного представления. По умолчанию, метод
get_queryset()возвращает значение атрибутаqueryset(если он установлен), - в противном случае будет создан экземпляр классаQuerySetвызовом метода all() у атрибута :attr:`model`( с помощью менеджера по умолчанию).
- get_context_object_name(obj)¶
Возвращает имя переменной контекста(context variable), которая будет доступна в шаблоне и будет содержать данные, с которыми работает представление. Если атрибут
context_object_nameне установлен, то имя переменной контекста будет составлено изmodel_nameмодели, «породившей» текущий queryset. Например, модельArticleбудет иметь переменную контекста с именем'article'.
- get_context_data(**kwargs)¶
Возвращает данные контекста для отображения объекта.
Встроенная реализация этого метода требует чтобы атрибут
self.objectбыл установлен в представлении (пускай даже вNone). Не забудьте об этом, когда будете использовать этот mixin без одного из встроенных представлений, которое уже делает это.Возвращает словарь со следующим содержимым:
object: Объект, который отображается представлением (self.object).context_object_name:self.objectбудет сохранен в контексте под именем, которое вернул методget_context_object_name(). По умолчанию это название модели в нижнем регистре.
Переменные контекста переопределяют значения из контекстных процессоров
Переменные из
get_context_data()перезаписывают переменные контекста из процессоров контекста. Например, если ваше представление записываетUserв атрибутmodel, название переменной контекста по умолчаниюuserперезапишет переменнуюuserи процессора контекстаdjango.contrib.auth.context_processors.auth(). Используйтеget_context_object_name(), чтобы избежать конфликтов.
- get_slug_field()¶
Возвращает имя поля, хранящего «slug», которое будет использоваться при выборке данных по слагу. По умолчанию просто возвращает значение атрибута
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