Классы миксинов для одного объекта

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

Copyright ©2021 All rights reserved