Посмотреть декораторы

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 = Нет , last_modified_func = Нет )
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_headers( * заголовки )

В Varyопределяет заголовок , который заголовки запроса механизм кэширования следует учитывать при создании своего ключа кэша.

См. Использование различных заголовков .

Кеширование

Декораторы в django.views.decorators.cacheкэшировании на сервере управления и на стороне клиента.

cache_control( ** kwargs )

Этот декоратор исправляет Cache-Controlзаголовок ответа, добавляя к нему все аргументы ключевого слова. См. patch_cache_control()Подробности трансформации.

never_cache( view_func )

Этот декоратор добавляет заголовок к ответу, чтобы указать, что страницу никогда не следует кэшировать.Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private

Обычный

Новое в Django 3.2.

Декораторы django.views.decorators.commonпозволяют настраивать CommonMiddlewareповедение для каждого просмотра .

no_append_slash()

Этот декоратор позволяет исключить отдельные представления из APPEND_SLASHнормализации URL.

Copyright ©2021 All rights reserved