Spec-Zone.ru › Django 6.0

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():

urlpatterns = [
    path("view/", MyView.as_view(size=42)),
]

Потокобезопасность аргументов представления

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

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

Базовые и универсальные представления

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

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

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

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/6.0/ref/class-based-views/index/

Spec-Zone.ru

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