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()
Http404pero noHttp403? ¿Por qué la inconsistencia?raise PermissionDeniedtiene 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 aumentoPermissionDeniedocasiona que el error se procese usando la403.htmlplantilla, o puede usar el middleware para mostrar una vista personalizada "Prohibida".fuente
throw PermissionDeniedno 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