Декораторы представлений
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Обратите внимание, что методы запроса должны быть в верхнем регистре.
-
require_GET() -
Декоратор, требующий, чтобы представление принимало только метод GET.
-
require_POST() -
Декоратор, требующий, чтобы представление принимало только метод POST.
-
require_safe() -
Декоратор, требующий, чтобы представление принимало только методы GET и HEAD. Эти методы обычно считаются «безопасными», потому что они не должны иметь значение выполнения действия, отличного от получения запрашиваемого ресурса.
Примечание
Django автоматически удалит содержимое ответов на запросы HEAD, оставив заголовки неизменными, поэтому вы можете обрабатывать запросы HEAD точно так же, как запросы GET, в своих представлениях. Поскольку некоторые программы, такие как проверяющие ссылки, полагаются на запросы HEAD, вы можете предпочесть использовать
require_safeвместоrequire_GET.
Условное выполнение представлений
Следующие декораторы в 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заголовков; см. условное выполнение представлений.
Сжатие GZip
Декораторы в django.views.decorators.gzip управляют сжатием содержимого на основе представлений.
-
gzip_page() -
Этот декоратор сжимает содержимое, если браузер позволяет сжатие gzip. Он устанавливает
Varyзаголовок соответствующим образом, чтобы кэши основывали свое хранение наAccept-Encodingзаголовке.
Заголовки Vary
Декораторы в django.views.decorators.vary могут использоваться для управления кэшированием на основе определенных заголовков запроса.
-
vary_on_headers(*headers)[source] -
Заголовок
Varyопределяет, какие заголовки запроса механизм кэширования должен учитывать при построении ключа кэша.
Кэширование
Декораторы в django.views.decorators.cache управляют кэшированием на стороне сервера и клиента.
-
never_cache(view_func)[source] -
Этот декоратор добавляет заголовок
Cache-Control: max-age=0, no-cache, no-store, must-revalidateв ответ, чтобы указать, что страница никогда не должна кэшироваться.До Django 1.9 отправлялся заголовок
Cache-Control: max-age=0. Это не гарантировало предотвращения кэширования во всех браузерах.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.9/topics/http/decorators/