Декораторы представлений
Django предоставляет несколько декораторов, которые можно применять к представлениям для поддержки различных функций HTTP.
См. Декорирование класса, чтобы узнать, как использовать эти декораторы с представлениями на основе класса.
Разрешенные HTTP-методы
Декораторы в django.views.decorators.http могут использоваться для ограничения доступа к представлениям на основе метода запроса. Эти декораторы вернут django.http.HttpResponseNotAllowed, если условия не выполнены.
-
require_http_methods(request_method_list)[source] -
Декоратор для требования, чтобы представление принимало только определенные методы запроса. Использование:
from django.views.decorators.http import require_http_methods @require_http_methods(["GET", "POST"]) def my_view(request): # I can assume now that only GET or POST requests make it this far # ... passОбратите внимание, что методы запроса должны быть в верхнем регистре.
Изменено в Django 5.0:Добавлена поддержка обертывания асинхронных функций представлений.
-
require_GET() -
Декоратор, требующий, чтобы представление принимало только метод GET.
Изменено в Django 5.0:Добавлена поддержка обертывания асинхронных функций представлений.
-
require_POST() -
Декоратор, требующий, чтобы представление принимало только метод POST.
Изменено в Django 5.0:Добавлена поддержка обертывания асинхронных функций представлений.
-
require_safe() -
Декоратор, требующий, чтобы представление принимало только методы GET и HEAD. Эти методы обычно считаются «безопасными», потому что они не должны иметь значения, совершая действие, отличное от получения запрошенного ресурса.
Примечание
Веб-серверы должны автоматически удалять содержимое ответов на запросы HEAD, оставляя заголовки неизменными, поэтому вы можете обрабатывать запросы HEAD точно так же, как запросы GET в своих представлениях. Поскольку некоторые программы, такие как проверки ссылок, полагаются на запросы HEAD, вы можете предпочесть использовать
require_safeвместоrequire_GET.Изменено в Django 5.0:Добавлена поддержка обертывания асинхронных функций представлений.
Условное обработка представлений
Следующие декораторы в django.views.decorators.http могут использоваться для управления поведением кэширования на определенных представлениях.
-
condition(etag_func=None, last_modified_func=None)[source]
-
etag(etag_func)[source]
-
last_modified(last_modified_func)[source] -
Эти декораторы могут использоваться для генерации
ETagиLast-Modifiedзаголовков; см. условную обработку представлений.Изменено в Django 5.0:Добавлена поддержка обертывания асинхронных функций представлений.
Сжатие GZip
Декораторы в django.views.decorators.gzip управляют сжатием содержимого на основе представлений.
-
gzip_page() -
Этот декоратор сжимает содержимое, если браузер поддерживает сжатие gzip. Он устанавливает заголовок
Varyсоответственно, чтобы кэши основывали свой хранение на заголовкеAccept-Encoding.Изменено в Django 5.0:Добавлена поддержка обертывания асинхронных функций представлений.
Заголовки Vary
Декораторы в django.views.decorators.vary могут использоваться для управления кэшированием на основе определённых заголовков запроса.
-
vary_on_cookie(func) -
Изменено в Django 5.0:
Добавлена поддержка обертывания асинхронных функций представлений.
-
vary_on_headers(*headers)[source] -
Заголовок
Varyопределяет, какие заголовки запроса механизм кэширования должен учитывать при построении ключа кэша.См. использование заголовков vary.
Изменено в Django 5.0:Добавлена поддержка обертывания асинхронных функций представлений.
Кэширование
Декораторы в django.views.decorators.cache управляют кэшированием на стороне сервера и клиента.
-
cache_control(**kwargs)[source] -
Этот декоратор изменяет заголовок ответа
Cache-Controlпутем добавления всех аргументов ключевых слов в него. См.patch_cache_control()для подробностей преобразования.Изменено в Django 5.0:Добавлена поддержка обертывания асинхронных функций представлений.
-
never_cache(view_func)[source] -
Этот декоратор добавляет заголовок
Expiresк текущей дате/времени.Этот декоратор добавляет заголовок
Cache-Control: max-age=0, no-cache, no-store, must-revalidate, privateк ответу, чтобы указать, что страница никогда не должна кэшироваться.Каждый заголовок добавляется только в том случае, если он еще не задан.
Изменено в Django 5.0:Добавлена поддержка обертывания асинхронных функций представлений.
Общие
Декораторы в django.views.decorators.common позволяют настраивать поведение CommonMiddleware на уровне представлений.
-
no_append_slash()[source] -
Этот декоратор позволяет исключить отдельные представления из нормализации URL в
APPEND_SLASH.Изменено в Django 5.0:Добавлена поддержка обертывания асинхронных функций представлений.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.1/topics/http/decorators/