Spec-Zone.ru › Django 4.2

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.2/ref/class-based-views/index/

Spec-Zone.ru

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