django:如何让PermissionDenied异常显示原因?
我在视图的dispatch()中编写了如下代码,以限制对特定用户的访问:django:如何让PermissionDenied异常显示原因?,django,django-views,Django,Django Views,我在视图的dispatch()中编写了如下代码,以限制对特定用户的访问: if user.name != 'admin': raise PermissionDenied("you don't have access") 如果引发了异常,它只会显示在以下的重定向页面上: 403禁止 是否可以让django显示错误页面,原因如下: 403 Forbidden you don't have access 使用自定义403错误视图。您可以在internet上找到大量示例。您可以使用Djang
if user.name != 'admin':
raise PermissionDenied("you don't have access")
如果引发了异常,它只会显示在以下的重定向页面上:
403禁止
是否可以让django显示错误页面,原因如下:
403 Forbidden
you don't have access
使用自定义403错误视图。您可以在internet上找到大量示例。您可以使用Django中间件和
HttpResponseForbidden
实现这一点。它看起来像这样:
from django.shortcuts import HttpResponseForbidden
class ForbiddenMiddleware(object):
"""
Don't give permissions for particular without admin
"""
def process_request(self, request):
if not request.user.is_superuser:
return HttpResponseForbidden("403 Forbidden , you don't have access")
return None
from django.http import HttpResponseForbidden
注意:上述中间件适用于所有视图
如果要将检查限制为特定视图,请执行以下操作:
def my_view(request, ):
if not request.user.is_superuser:
return HttpResponseForbidden("403 Forbidden , you don't have access")
else:
# your render
更新2020
在Django 3.0中,您必须从http
导入httpreponseforbidded
类,如下所示:
from django.shortcuts import HttpResponseForbidden
class ForbiddenMiddleware(object):
"""
Don't give permissions for particular without admin
"""
def process_request(self, request):
if not request.user.is_superuser:
return HttpResponseForbidden("403 Forbidden , you don't have access")
return None
from django.http import HttpResponseForbidden
你能发布完整的错误日志吗?@dhana抱歉,问题不清楚,没有问题,我只是想问一下我是否能在异常页面上显示异常描述