在Django 2中登录后如何将用户和管理员重定向到其他模板

时间:2018-10-02 04:28:34

标签: django-templates django-views django-2.0

我是Django 2的新手。我尝试开发一个项目,该项目的要求来自同一登录页面 user admin 可以登录,但当用户登录时他将查看自己的仪表板,而管理员将查看他自己的仪表板

我的views.py代码是

def loginCheck(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        admin = authenticate(request, is_staff=1, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')
        elif admin is not None:
            login(request, user)
            return redirect('admin')
        else:
            messages.add_message(request, messages.INFO, 'Wrong User Name Or Password')
            return redirect('loginView')
    messages.add_message(request, messages.INFO, 'You Have To Login First')
    return redirect('loginView')

我正在尝试获取is_staff值来验证管理员和用户,但没有成功。现在如何才能从相同的登录表单登录,并为用户和管理员提供不同的仪表板?

1 个答案:

答案 0 :(得分:2)

在上面的代码中,您要对单个用户进行两次身份验证,这是一个不好的做法。根据您的要求,我们可以像下面这样。

def loginCheck(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        if user and user.is_staff is False:
            login(request, user)
            return redirect('home')
        elif user and user.is_staff is True:
            login(request, user)
            return redirect('admin')
        else:
            messages.add_message(request, messages.INFO, 'Wrong User Name Or Password')
            return redirect('loginView')
    messages.add_message(request, messages.INFO, 'You Have To Login First')
    return redirect('loginView')