当我尝试使用staff_view时,我会在管理员身份验证界面中重定向。
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def staff_view(request..):
...
如何进行自定义登录,而不是在默认的管理员登录界面中重定向?
答案 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_required
是user_passes_test
的封套(请参阅source code),它还接受login_url
参数,因此您可以这样做:
@staff_member_required(login_url=example_url)
def staff_view(request..):
...