Respuestas:
Devuélvalo desde la vista como lo haría con cualquier otra respuesta.
from django.http import HttpResponseForbidden
return HttpResponseForbidden()
raise PermissionDenied
tiene la ventaja de permitirle mostrar su vista 403 personalizada
si desea plantear una excepción, puede usar:
from django.core.exceptions import PermissionDenied
def your_view(...):
raise PermissionDenied()
Está documentado aquí:
https://docs.djangoproject.com/en/stable/ref/views/#the-403-http-forbidden-view
A diferencia de la recuperación HttpResponseForbidden
, el aumento PermissionDenied
ocasiona que el error se procese usando la 403.html
plantilla, o puede usar el middleware para mostrar una vista personalizada "Prohibida".
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.
from django.http import HttpResponse
from django.http import Http404
from django.core.exceptions import PermissionDenied
def index(request):
html = """
<!DOCTYPE html>
<html lang="en">
<body>
<ul>
<li><a href="/">home</a></li>
<li><a href="?action=raise403">Raise Error 403</a></li>
<li><a href="?action=raise404">Raise Error 404</a></li>
<li><a href="?action=raise500">Raise Error 500</a></li>
</ul>
</body>
</html>
"""
action = request.GET.get('action', '')
if action == 'raise403':
raise PermissionDenied
elif action == 'raise404':
raise Http404
elif action == 'raise500':
raise Exception('Server error')
return HttpResponse(html)
Pruebe de esta manera, enviando un mensaje con error
from django.core.exceptions import PermissionDenied
raise PermissionDenied("You do not have permission to Enter Clients in Other Company, Be Careful")
Http404
pero noHttp403
? ¿Por qué la inconsistencia?