Spec-Zone.ru › Django 1.9

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
  • Упрощенный индекс представлений Django на основе классов
    • Простые обобщенные представления
      • 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).

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

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

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

END_OF_DOCUMENT_MARKER

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

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

Spec-Zone.ru

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