Справочник по API


Справочник по API представления на основе классов. Для получения вводного материала см. тематическое руководство Представления на основе классов.

Базовые виды
View
TemplateView
RedirectView
Общие представления дисплея
DetailView
ListView
Общие представления редактирования
FormView
CreateView
UpdateView
DeleteView
Общие представления даты
ArchiveIndexView
YearArchiveView
MonthArchiveView
WeekArchiveView
DayArchiveView
TodayArchiveView
DateDetailView
Миксины представлений на основе классов
Простые миксины
ContextMixin
TemplateResponseMixin
Миксины одного объекта
SingleObjectMixin
SingleObjectTemplateResponseMixin
Смешивание нескольких объектов
MultipleObjectMixin
MultipleObjectTemplateResponseMixin
Редактирование миксинов
FormMixin
ModelFormMixin
ProcessFormView
DeletionMixin
Миксины, основанные на дате
YearMixin
MonthMixin
DayMixin
WeekMixin
DateMixin
BaseDateListView
Общие представления на основе классов - уплощенный индекс
Простые общие представления
View
TemplateView
RedirectView
Подробные виды
DetailView
Просмотр списка
ListView
Редактирование представлений
FormView
CreateView
UpdateView
DeleteView
Представления на основе даты
ArchiveIndexView
YearArchiveView
MonthArchiveView
WeekArchiveView
DayArchiveView
TodayArchiveView
DateDetailView
Спецификация
Каждый запрос, обслуживаемый представлением на основе класса, имеет независимое состояние; поэтому безопасно хранить переменные состояния на экземпляре (т.е. self.foo = 3 является потокобезопасной операцией).

Представление на основе класса развертывается в шаблон URL с помощью as_view() classmethod:

urlpatterns = [
path('view/', MyView.as_view(size=42)),
]
Безопасность потоков с аргументами представления

Аргументы, передаваемые в представление, разделяются между всеми экземплярами представления. Это означает, что вы не должны использовать список, словарь или любой другой изменяемый объект в качестве аргумента представления. Если вы это сделаете, и общий объект будет изменен, действия одного пользователя, посетившего ваше представление, могут повлиять на последующих пользователей, посетивших то же представление.

Аргументы, переданные в as_view(), будут присвоены экземпляру, который используется для обслуживания запроса. Используя предыдущий пример, это означает, что каждый запрос на MyView сможет использовать self.size. Аргументы должны соответствовать атрибутам, которые уже существуют в классе (возврат True при проверке hasattr).

Базовые и общие представления
Представления на основе базовых классов можно рассматривать как родительские представления, которые могут использоваться сами по себе или наследоваться от них. Они могут не предоставлять всех возможностей, необходимых для проектов, в этом случае существуют Миксины, которые расширяют возможности базовых представлений.

Общие представления Django построены на основе этих базовых представлений и были разработаны как кратчайший путь к распространенным шаблонам использования, таким как отображение деталей объекта. Они берут определенные общие идиомы и паттерны, встречающиеся в разработке представлений, и абстрагируют их, чтобы вы могли быстро писать общие представления данных без необходимости повторяться.

Для большинства общих представлений требуется ключ queryset, который является экземпляром QuerySet; более подробную информацию об объектах Создание запросов смотрите в QuerySet.