Django предоставляет несколько декораторов, которые могут быть применены к функции представления, для поддержки различных функций HTTP.
Декораторы из модуля django.views.decorators.http могут быть использованы для ограничения доступа к представлению в зависимости от типа запроса. Эти декораторы возвращают django.http.HttpResponseNotAllowed если требования к типу запроса не удовлетворены.
Декоратор позволяет представлению обрабатывать только указанные типы запросов. Например:
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
Заметим, что тип запроса должен быть указан в верхнем регистре.
Декоратор позволяет представлению обрабатывать только GET-запросы.
Декоратор позволяет представлению обрабатывать только POST-запросы.
Декоратор позволяет представлению обрабатывать только GET и HEAD запросы. Эти метода считаются “безопасными”, потому что не должны предпринимать каких либо действий кроме получения данных.
Примечание
Django обрезает содержимое для HEAD запроса не изменяя заголовки ответа, по этому вы можете обрабатывать HEAD запросе тем же представлением, которое обрабатывает GET запросы. Так как некоторое программное обеспечение, например проверщик ссылок, используют HEAD запросы, возможно вам лучше использовать require_safe вместо require_GET.
Декораторы из модуля django.views.decorators.http могут быть использованы для управления кэширования определенных представлений.
Эти декораторы могут использоваться для генерации заголовков ETag и Last-Modified; смотрите раздел про условную обработку запроса.
Декораторы из django.views.decorators.gzip управляют сжатием ответа представления.
Этот декоратор сжимает содержимое ответа, если браузер допускает gzip сжатие. Он устанавливает соответствующий заголовок Vary указывая учитывать заголовок Accept-Encoding при кэшировании.
Декораторы из модуля django.views.decorators.vary могут использоваться для кэширования по определенным заголовкам запроса.
Заголовок Vary указывает какие заголовки должен использоваться кэширующий механизм при создании ключа кэша.
Смотрите использование Vary заголовка.
Декораторы из django.views.decorators.cache управляют кэшированием на стороне сервера и клиента
Декоратор добавляет заголовок Cache-Control: max-age=0, no-cache, no-store, must-revalidate к ответу, указывая, что странице не должна никогда кэшироваться.
До Django 1.9 отправлялся Cache-Control: max-age=0. Это не работало во всех браузерах.
Mar 31, 2016