我正在从事一个需要多个用户的项目。我应该如何根据用户的角色将用户发送到不同的页面?这是与登录相关的模型和 View 的代码。
模型.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
Roles = (
('sales', 'SALES'),
('operations', 'OPERATIONS'),
('cashier', 'CASHIER'),
('frontdesk', 'FRONTDESK'),
('client', 'CLIENT'),
)
class UserProfile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE, default=None, null=True)
role = models.CharField(max_length=50, choices=Roles, default='client')
def __str__(self):
return self.user.username
登录查看:
def user_login(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username = username , password = password)
if user:
if user.is_active:
login(request, user)
return HttpResponseRedirect(reverse('index'))
else:
return HttpResponse("ACCount not active!!")
else:
print("someone tried to login and falied!")
print("Username : {} and Password : {}".format(username,password))
return HttpResponse("Invalid credentials!")
else:
return render(request , 'NewApp/login.html' , {})
最佳答案
您可以通过检查角色值然后重定向到适当的 View 来做到这一点:
if user.is_active:
login(request, user)
if user.userprofile.role == 'sales':
# sales users landing page
elif user.userprofile.role == 'operations':
# operations users landing page
. . . . .
else:
return HttpResponseRedirect(reverse('index'))
关于python - 如何在 Django 中为不同的用户重定向登录到不同的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56526277/