Este dilema se puede tratar de diversas formas, pero en este caso te mostramos la solución más completa para nosotros.
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 derequire_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
yLast-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 elAccept-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. Verpatch_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,
encabezado a una respuesta para indicar que una página nunca debe almacenarse en caché.
must-revalidate, private
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.
Comentarios y puntuaciones
Si sostienes alguna desconfianza o capacidad de aclarar nuestro post puedes añadir una explicación y con gusto lo interpretaremos.