Me gustaría hacer lo siguiente:
raise HttpResponseForbidden()
Pero me sale el error:
exceptions must be old-style classes or derived from BaseException, not HttpResponseForbidden
¿Cómo debería hacer esto?
Devuélvalo desde la vista como lo haría con cualquier otra respuesta.
from django.http import HttpResponseForbidden
return HttpResponseForbidden()
Http404
pero noHttp403
? ¿Por qué la inconsistencia?raise PermissionDenied
tiene la ventaja de permitirle mostrar su vista 403 personalizadasi desea plantear una excepción, puede usar:
Está documentado aquí:
https://docs.djangoproject.com/en/stable/ref/views/#the-403-http-forbidden-view
A diferencia de la recuperación
HttpResponseForbidden
, el aumentoPermissionDenied
ocasiona que el error se procese usando la403.html
plantilla, o puede usar el middleware para mostrar una vista personalizada "Prohibida".fuente
throw PermissionDenied
no como una llamada de función, sin()
el final.Opcionalmente, puede proporcionar una plantilla personalizada llamada "403.html" para controlar la representación de 403 errores HTTP.
Como señaló correctamente @ dave-halter, la plantilla 403 solo se puede usar si aumenta PermissionDenied
A continuación se muestra una vista de muestra utilizada para probar plantillas personalizadas "403.html", "404.html" y "500.html"; asegúrese de establecer DEBUG = False en la configuración del proyecto o el marco mostrará un rastreo en su lugar para 404 y 500.
fuente
Pruebe de esta manera, enviando un mensaje con error
fuente