DJango:根据 user.is_staff 和 request.user.is_authenticated() 显示不同的主页

43T*_*cts 0 python django django-views

这是我的简单主页视图,其中一个用于工作人员,另一个用于登录用户,另一个用于其余人员:

def home(request):
    ipdb.set_trace()  ######### Break Point ###########

    if request.user.is_staff:
        redirect('quests:approvals')

    if request.user.is_authenticated():
        redirect('quests:quests')

    return render(request, "home.html", {})
Run Code Online (Sandbox Code Playgroud)

但是,请求是空的,并且其中没有任何信息:

ipdb> request
<WSGIRequest: GET '/'>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

这只是我的主项目应用程序中的一个视图

我之前使用的是:

@user_passes_test(lambda user: not user.get_username(), login_url='myUrl', redirect_field_name=None)
def home(request):
...
Run Code Online (Sandbox Code Playgroud)

效果很好,但我不知道如何为员工用户去其他地方。

Tia*_*ago 5

看起来你忘记了return那里。

if request.user.is_staff:
    return redirect('quests:approvals')

if request.user.is_authenticated():
    return redirect('quests:quests')
Run Code Online (Sandbox Code Playgroud)