Spec-Zone.ru › Django 1.10

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 = [
    url(r'^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/1.10/ref/class-based-views/index/

Spec-Zone.ru

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