使用staff_member_required装饰器,但没有被重定向到管理界面?

时间:2012-08-02 09:28:55

标签: django authentication decorator

当我尝试使用staff_view时,我会在管理员身份验证界面中重定向。

    from django.contrib.admin.views.decorators import staff_member_required

    @staff_member_required
    def staff_view(request..):
        ...

如何进行自定义登录,而不是在默认的管理员登录界面中重定向?

2 个答案:

答案 0 :(得分:27)

您可以使用Django的user_passes_test装饰器:

from django.contrib.auth.decorators import user_passes_test

@user_passes_test(lambda u:u.is_staff, login_url=reverse_lazy('foo'))
def staff_view(request..):
    ...

答案 1 :(得分:8)

值得指出的是staff_member_requireduser_passes_test的封套(请参阅source code),它还接受login_url参数,因此您可以这样做:

@staff_member_required(login_url=example_url)
def staff_view(request..):
    ...