代码之家  ›  专栏  ›  技术社区  ›  mpen

Django权限\所需的错误消息?

  •  6
  • mpen  · 技术社区  · 14 年前

    @permission_required('codename')
    

    当一个用户访问该页面,但没有所需的权限时,他会被重定向到登录页面,但它并没有真正告诉他 为什么? 他被调到那里去了。更糟的是,如果他登录 仍然

    有没有一种方法可以让我在打开消息框架的同时发布一个错误?

    4 回复  |  直到 14 年前
        1
  •  1
  •   Community rohancragg    7 年前

    你呢 可以 my answer

        2
  •  6
  •   Sanjeev    11 年前

    from django.contrib.auth.decorators import permission_required
    
    @permission_required('app.permission',raise_exception=True)
    def myView(request):
        #your view code
    

    这将引发一个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
    

        3
  •  1
  •   gruszczy    14 年前

    您可以在此装饰器中使用login\u url参数重定向到其他页面,而不是登录页面。或者,您也可以根据django的代码编写自己的decorator:

    def permission_required(perm, login_url=None):
        """
        Decorator for views that checks whether a user has a particular permission
        enabled, redirecting to the log-in page if necessary.
        """
        return user_passes_test(lambda u: u.has_perm(perm), login_url=login_url)
    

    简单的改变 login_url redirect_to 不会引起任何混乱。

        4
  •  1
  •   theycallmemorty    14 年前

    使用 @permission_required_or_403('codename')

    这会将用户重定向到403“权限被拒绝”错误页。