[英]How to check user type and direct them to respective pages in Django?
I am building a Django project where I have two categories of users.我正在构建一个 Django 项目,其中有两类用户。 I have two models namely StudentUser and Recruiter.我有两个模型,即 StudentUser 和 Recruiter。 However, I provide only one login page and depending on the user type I direct them to either student_homepage or recruiter_homepage.但是,我只提供一个登录页面,并根据用户类型将他们引导到 student_homepage 或recruiter_homepage。 I am not sure how to proceed for the recruiter part.我不确定如何进行招聘人员部分。 Can you guys help please?请问各位能帮忙吗?
Here is my code.这是我的代码。
models.py模型.py
class StudentUser(models.Model):
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
user = models.OneToOneField(User, on_delete=models.CASCADE)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
region = models.CharField(max_length=50)
phone_num = PhoneNumberField()
contact_email = models.EmailField()
bio = models.TextField()
linkedin = models.URLField(max_length=200)
user_type = models.CharField(max_length=10)
def __str__(self):
return self.user.username
class Recruiter(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
position = models.CharField(max_length=50)
phone_num = PhoneNumberField()
company_name = models.CharField(max_length=100)
company_country = models.CharField(max_length=60)
company_street = models.CharField(max_length=100)
company_city = models.CharField(max_length=100)
status = models.CharField(max_length=20)
user_type = models.CharField(max_length=10)
def __str__(self):
return self.user.username
views.py视图.py
def user_login(request):
error=""
if request.method == "POST":
username = request.POST['email']
print(username)
password = request.POST['password']
#CHECK IN USER TABLE FOR MATCHING UNAME AND PASSWD
user = authenticate(username=username, password=password)
#CHECKING IF USER IS VALID -->RESOLVES TO TRUE/FALSE
if user:
try:
user1 = StudentUser.objects.get(user=user)
if user1.user_type == "Student":
login(request,user)
messages.success(request, "You are now logged in!")
return redirect('home')
else:
error = True
except:
error = True
else: #Invalid Credentials
messages.error(request, "Invalid credentials! Try again")
context = {'error': error,
}
return render(request, 'login.html',context)
You can try this你可以试试这个
if user1.user_type == "Student":
login(request,user)
messages.success(request, "You are now logged in!")
return redirect('home_page_for_student')
else:
login(request,user)
messages.success(request, "You are now logged in!")
return redirect('home_page_for_recruiter')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.