Django permission_required错误信息?

mpe*_*pen 6 django

我已将此装饰器添加到我的一个视图中

@permission_required('codename')
Run Code Online (Sandbox Code Playgroud)

当用户访问该页面并且没有所需的权限时,他会被重定向到登录页面,但它并没有真正告诉他为什么他被重定向到那里.更糟糕的是,如果他登录,但仍然没有权限,他将完全无能为力,为什么他无法访问该页面!

有没有办法我可以利用消息框架并同时发布错误?

San*_*eev 6

不确定您使用的是哪个版本的 Django,但在 Django 1.4 及更高版本中,您可以使用:

from django.contrib.auth.decorators import permission_required

@permission_required('app.permission',raise_exception=True)
def myView(request):
    #your view code
Run Code Online (Sandbox Code Playgroud)

这将引发 403 异常,如果您在模板文件夹的底部有一个 403.html 页面,它将对此进行处理。

如果您使用基于类的视图:

from django.views.generic.base import View
from django.contrib.auth.decorators import permission_required
from django.utils.decorators import method_decorator

class MyView(View):

    @method_decorator(permission_required('app.permission',raise_exception=True)
    def get(self, request):
        #your GET view
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。


Man*_*dan 1

可以进入消息框架并提供错误消息。请参阅我对同一问题的回答。