Spec-Zone.ru › Django 5.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).

Базовые vs. Общие представления

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

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

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

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

Spec-Zone.ru

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