我是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
值来验证管理员和用户,但没有成功。现在如何才能从相同的登录表单登录,并为用户和管理员提供不同的仪表板?
答案 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')