Декораторы представлений¶
Django предоставляет несколько декораторов, которые можно применять к представлениям для поддержки различных функций HTTP.
Смотрите Украшение класса, чтобы узнать, как использовать эти декораторы с представлениями на основе классов.
Разрешенные методы HTTP¶
Декораторы в django.views.decorators.http
могут использоваться для ограничения доступа к представлениям на основе метода запроса. Эти декораторы возвращают django.http.HttpResponseNotAllowed
, если условия не выполняются.
-
require_http_methods
(request_method_list)[исходный код]¶ Декоратор, требующий, чтобы представление принимало только определенные методы запроса. Использование:
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. Эти методы обычно считаются «безопасными», потому что они не должны иметь никакого значения для выполнения каких-либо действий, кроме получения запрошенного ресурса.
Примечание
Веб-серверы должны автоматически удалять содержимое ответов на запросы HEAD, оставляя заголовки без изменений, поэтому вы можете обрабатывать запросы HEAD точно так же, как запросы GET в ваших представлениях. Поскольку некоторые программы, такие как средства проверки ссылок, полагаются на запросы HEAD, вы можете предпочесть использовать
require_safe
вместоrequire_GET
.
Условная обработка представления¶
Следующие декораторы в django.views.decorators.http
могут использоваться для управления поведением кеширования в определенных представлениях.
-
condition
(etag_func=None, last_modified_func=None)[исходный код]¶
-
etag
(etag_func)[исходный код]¶
-
last_modified
(last_modified_func)[исходный код]¶ Эти декораторы можно использовать для генерации заголовков
ETag
иLast-Modified
; смотрите обработка условного представления.
Сжатие GZip¶
Декораторы в django.views.decorators.gzip
управляют сжатием содержимого для каждого представления.
-
gzip_page
()¶ Этот декоратор сжимает контент, если браузер разрешает сжатие gzip. Он соответственно устанавливает заголовок
Vary
, так что кеши будут основывать свое хранилище на заголовкеAccept-Encoding
.
Разные заголовки¶
Декораторы в django.views.decorators.vary
могут использоваться для управления кешированием на основе определенных заголовков запроса.
-
vary_on_cookie
(func)[исходный код]¶
-
vary_on_headers
(*headers)[исходный код]¶ Заголовок
Vary
определяет, какие заголовки запросов должен учитывать механизм кеширования при построении своего ключа кеша.Смотрите: ref: using different headers <using-vary-headers>.
Кэширование¶
Декораторы в django.views.decorators.cache
управляют сервером и кэшированием на стороне клиента.
-
cache_control
(**kwargs)[исходный код]¶ Этот декоратор исправляет заголовок ответа
Cache-Control
, добавляя к нему все ключевые аргументы. Смотритеpatch_cache_control()
для получения подробной информации о преобразовании.
-
never_cache
(view_func)[исходный код]¶ Этот декоратор добавляет заголовок
Expires
к текущей дате/времени.Этот декоратор добавляет в ответ заголовок
Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private
, чтобы указать, что страница никогда не должна кэшироваться.Каждый заголовок добавляется только в том случае, если он еще не установлен.
Загальне¶
Декораторы в django.views.decorators.common
позволяют настраивать для каждого представления поведение CommonMiddleware
.
-
no_append_slash
()[исходный код]¶ Этот декоратор позволяет исключить отдельные представления из
APPEND_SLASH
нормализации URL.