首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让PermissionDenied异常显示原因?

如何让PermissionDenied异常显示原因?
EN

Stack Overflow用户
提问于 2014-05-09 06:08:39
回答 2查看 2.1K关注 0票数 3

我在调度()中编写了这样的代码,用于限制对特定用户的访问:

代码语言:javascript
运行
复制
if user.name != 'admin':
    raise PermissionDenied("you don't have access")

如果引发异常,它只会显示在以下的重定向页上:

403禁止

是否可以让django显示错误页面,原因如下:

代码语言:javascript
运行
复制
403 Forbidden
you don't have access
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-09 09:10:31

您可以使用使用HttpResponseForbidden的Django中间件来完成这一任务。看起来会是这样的:

代码语言:javascript
运行
复制
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

注意:上面的中间件适用于所有视图。

如果要将检查限制为特定视图,请执行以下操作:

代码语言:javascript
运行
复制
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类,如下所示:

代码语言:javascript
运行
复制
from django.http import HttpResponseForbidden
票数 2
EN

Stack Overflow用户

发布于 2014-05-09 08:47:46

使用自定义403错误视图。你会在互联网上找到很多例子。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23557697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档