gpt4 book ai didi

django:如何让 PermissionDenied 异常显示原因?

转载 作者:行者123 更新时间:2023-12-05 05:26:49 26 4
gpt4 key购买 nike

我在 View 的 dispatch() 中编写了这样的代码来限制对特定用户的访问:

if user.name != 'admin':
raise PermissionDenied("you don't have access")

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

403 Forbidden

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

403 Forbidden
you don't have access

最佳答案

您可以使用带有 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

注意:上述中间件适用于所有 View 。

如果您想将检查限制在特定 View 中,请执行以下操作:

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 导入 HttpReponseForbidden 类,如下所示:

from django.http import HttpResponseForbidden

关于django:如何让 PermissionDenied 异常显示原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23557697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com