在 Django 2 中登录后如何将用户和管理员重定向到不同的模板
How to redirect user and admin to a different template after login in Django 2
我是 Django 2 的新手。我尝试开发一个项目,我的要求来自同一个登录页面 user 和 admin 可以登录,但是当用户登录时,他将查看自己的 dashboard,admin 将查看自己的不同 dashboard.
我的 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
值以 验证 管理员和用户,但没有成功。现在我如何从同一个登录表单登录并为用户和管理员提供不同的仪表板?
在上面的代码中,您对单个用户进行了两次身份验证,这是一种不好的做法。根据您的要求,我们可以像下面那样做。
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')
我是 Django 2 的新手。我尝试开发一个项目,我的要求来自同一个登录页面 user 和 admin 可以登录,但是当用户登录时,他将查看自己的 dashboard,admin 将查看自己的不同 dashboard.
我的 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
值以 验证 管理员和用户,但没有成功。现在我如何从同一个登录表单登录并为用户和管理员提供不同的仪表板?
在上面的代码中,您对单个用户进行了两次身份验证,这是一种不好的做法。根据您的要求,我们可以像下面那样做。
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')