API встроенных представлений на основе классов
Справочник API представлений на основе классов. Вводные материалы см. в тематическом руководстве Представления на основе классов.
- Базовые представления
- Универсальные представления для отображения
- Универсальные представления для редактирования
- Универсальные представления для работы с датами
- Примеси представлений на основе классов
- Универсальные представления на основе классов — сводный указатель
Спецификация
Каждый запрос, обрабатываемый представлением на основе класса, имеет независимое состояние; поэтому хранить переменные состояния в экземпляре безопасно (то есть self.foo = 3 является потокобезопасной операцией).
Представление на основе класса включается в шаблон URL с помощью метода класса as_view():
urlpatterns = [
path("view/", MyView.as_view(size=42)),
]
Потокобезопасность аргументов представления
Аргументы, переданные представлению, являются общими для всех его экземпляров. Это означает, что не следует использовать в качестве аргумента представления список, словарь или любой другой изменяемый объект. Если вы так сделаете и общий объект будет изменен, действия одного пользователя, посещающего ваше представление, могут повлиять на последующих пользователей того же представления.
Аргументы, переданные в as_view(), будут присвоены экземпляру, который используется для обработки запроса. В предыдущем примере это означает, что каждый запрос к MyView может использовать self.size. Аргументы должны соответствовать атрибутам, уже существующим в классе (в противном случае при проверке hasattr будет возвращено True).
Базовые и универсальные представления
Базовые представления на основе классов можно рассматривать как представления-родители, которые можно использовать самостоятельно или наследовать от них. Они могут не предоставлять все возможности, необходимые проектам; в таком случае можно воспользоваться примесями, расширяющими функциональность базовых представлений.
Универсальные представления Django построены на основе этих базовых представлений и разработаны как способ упростить распространенные сценарии использования, например отображение подробной информации об объекте. Они обобщают часто встречающиеся идиомы и шаблоны разработки представлений, позволяя быстро создавать стандартные представления данных без повторения кода.
Для большинства универсальных представлений требуется ключ queryset, представляющий собой экземпляр QuerySet; дополнительные сведения об объектах QuerySet см. в разделе Выполнение запросов.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/6.0/ref/class-based-views/index/