Django proporciona varios decoradores que se pueden aplicar a las vistas para admitir varias funciones HTTP.

Ver Decorando la clase para saber cómo usar estos decoradores con vistas basadas en clases.

Métodos HTTP permitidos

Los decoradores en django.views.decorators.http se puede utilizar para restringir el acceso a las vistas según el método de solicitud. Estos decoradores devolverán un django.http.HttpResponseNotAllowed si no se cumplen las condiciones.

require_http_methods(request_method_list)

Decorator para requerir que una vista solo acepte métodos de solicitud particulares. Uso:

from django.views.decorators.http import require_http_methods

@require_http_methods(["GET","POST"])defmy_view(request):# I can assume now that only GET or POST requests make it this far# ...pass

Tenga en cuenta que los métodos de solicitud deben estar en mayúsculas.

require_GET()

Decorator para requerir que una vista solo acepte el método GET.

require_POST()

Decorator para requerir que una vista solo acepte el método POST.

require_safe()

Decorator para requerir que una vista solo acepte los métodos GET y HEAD. Estos métodos se consideran comúnmente “seguros” porque no deben tener la importancia de tomar una acción que no sea recuperar el recurso solicitado.

Nota

Los servidores web deberían eliminar automáticamente el contenido de las respuestas a las solicitudes HEAD sin modificar los encabezados, por lo que puede manejar las solicitudes HEAD exactamente como las solicitudes GET en sus vistas. Dado que algunos programas, como los verificadores de enlaces, dependen de las solicitudes HEAD, es posible que prefiera utilizar require_safe en vez de require_GET.

Procesamiento de vista condicional

Los siguientes decoradores en django.views.decorators.http se puede utilizar para controlar el comportamiento del almacenamiento en caché en vistas particulares.

condition(etag_func=None, last_modified_func=None)
etag(etag_func)
last_modified(last_modified_func)

Estos decoradores se pueden utilizar para generar ETag y Last-Modified encabezados; ver procesamiento de vista condicional.

Compresión GZip

Los decoradores en django.views.decorators.gzip controlar la compresión de contenido por visualización.

gzip_page()

Este decorador comprime el contenido si el navegador permite la compresión gzip. Establece el Vary encabezado en consecuencia, de modo que los cachés basen su almacenamiento en el Accept-Encoding encabezamiento.

Variar encabezados

Los decoradores en django.views.decorators.vary se puede utilizar para controlar el almacenamiento en caché en función de encabezados de solicitud específicos.

vary_on_cookie(func)
vary_on_headers(*headers)

El Vary encabezado define qué encabezados de solicitud debe tener en cuenta un mecanismo de caché al construir su caché key.

Ver usando varios encabezados.

Almacenamiento en caché

Los decoradores en django.views.decorators.cache controlar el almacenamiento en caché del lado del cliente y del servidor.

cache_control(**kwargs)

Este decorador parchea la respuesta Cache-Control encabezado agregando todos los argumentos de palabras clave. Ver patch_cache_control() para los detalles de la transformación.

never_cache(view_func)

Este decorador agrega un Cache-Control: max-age=0, no-cache, no-store,
must-revalidate, private
encabezado a una respuesta para indicar que una página nunca debe almacenarse en caché.

Común

Nuevo en Django 3.2.

Los decoradores en django.views.decorators.common permitir la personalización por vista de CommonMiddleware conducta.

no_append_slash()

Este decorador permite excluir vistas individuales de APPEND_SLASH Normalización de URL.