22

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

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

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

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

4

2 回答 2

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..):
    ...
于 2012-08-02T09:37:38.340 回答
19

值得指出的是,它staff_member_required是一个包装器user_passes_test(参见源代码),它还接受一个login_url参数,所以你可以这样做:

@staff_member_required(login_url=example_url)
def staff_view(request..):
    ...
于 2017-02-04T09:44:54.097 回答