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

Kre*_*nik 17 authentication django decorator

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

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

    @staff_member_required
    def staff_view(request..):
        ...
Run Code Online (Sandbox Code Playgroud)

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

Hed*_*ide 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..):
    ...
Run Code Online (Sandbox Code Playgroud)


was*_*eek 9

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

@staff_member_required(login_url=example_url)
def staff_view(request..):
    ...
Run Code Online (Sandbox Code Playgroud)