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

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

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

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

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

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

Spec-Zone.ru

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