我在调度()中编写了这样的代码,用于限制对特定用户的访问:
if user.name != 'admin':
raise PermissionDenied("you don't have access")
如果引发异常,它只会显示在以下的重定向页上:
403禁止
是否可以让django显示错误页面,原因如下:
403 Forbidden
you don't have access
发布于 2014-05-09 09:10:31
您可以使用使用HttpResponseForbidden
的Django中间件来完成这一任务。看起来会是这样的:
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
注意:上面的中间件适用于所有视图。
如果要将检查限制为特定视图,请执行以下操作:
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中,您必须从HttpReponseForbidden
导入http
类,如下所示:
from django.http import HttpResponseForbidden
发布于 2014-05-09 08:47:46
使用自定义403错误视图。你会在互联网上找到很多例子。
https://stackoverflow.com/questions/23557697
复制相似问题