Декораторы представлений¶
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 запросы. Эти метода считаются «безопасными», потому что не должны предпринимать каких либо действий кроме получения данных.
Примечание
Django обрезает содержимое для HEAD запроса не изменяя заголовки ответа, по этому вы можете обрабатывать HEAD запросе тем же представлением, которое обрабатывает GET запросы. Так как некоторое программное обеспечение, например проверщик ссылок, используют HEAD запросы, возможно вам лучше использовать
require_safeвместоrequire_GET.
Условная обработка запроса¶
Декораторы из модуля django.views.decorators.http могут быть использованы для управления кэширования определенных представлений.
- condition(etag_func=None, last_modified_func=None)¶
- conditional_page()¶
Этот декоратор обеспечивает обработку условной операции GET
ConditionalGetMiddlewareдля представления.
- etag(etag_func)¶
- last_modified(last_modified_func)¶
Эти декораторы могут использоваться для генерации заголовков
ETagиLast-Modified; смотрите раздел про условную обработку запроса.
Сжатие с использованием GZip¶
Декораторы из django.views.decorators.gzip управляют сжатием ответа представления.
- gzip_page()¶
Этот декоратор сжимает содержимое ответа, если браузер допускает gzip сжатие. Он устанавливает соответствующий заголовок
Varyуказывая учитывать заголовокAccept-Encodingпри кэшировании.
Заголовки Vary¶
Декораторы из модуля django.views.decorators.vary могут использоваться для кэширования по определенным заголовкам запроса.
- vary_on_cookie(func)¶
- vary_on_headers(*headers)¶
Заголовок
Varyуказывает какие заголовки должен использоваться кэширующий механизм при создании ключа кэша.Смотрите использование Vary заголовка.
Кэширование¶
Декораторы из 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к ответу, указывая, что странице не должна никогда кэшироваться.Каждый заголовок добавляется только в том случае, если он еще не установлен.
Общий¶
Декораторы в django.views.decorators.common позволяют настраивать поведение CommonMiddleware для каждого представления.
- no_append_slash()¶
Этот декоратор позволяет исключить отдельные представления из нормализации URL-адресов
APPEND_SLASH.