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

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

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

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

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

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

Spec-Zone.ru

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