Spec-Zone.ru › Django 4.1

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. Аргументы должны соответствовать атрибутам, которые уже существуют в классе (возвращает True при проверке hasattr).

Базовые против представлений общего назначения

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

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

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

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

Spec-Zone.ru

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