python - 如何检查用户类型并将它们定向到 Django 中的相应页面?
问题描述
我正在构建一个 Django 项目,其中有两类用户。我有两个模型,即 StudentUser 和 Recruiter。但是,我只提供一个登录页面,并根据用户类型将他们引导到 student_homepage 或recruiter_homepage。我不确定如何进行招聘人员部分。请问各位能帮忙吗?
这是我的代码。
模型.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
视图.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)
解决方案
你可以试试这个
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')
推荐阅读
- angular - 仅加载一次 Angular 组件
- c# - 重构所有代码文件以删除类型限定符
- node.js - 公共模块在路由内的代码之前执行?
- python - 如何使用 python 在日期之间访问 azure Dev Ops 数据,例如 Changeset?
- ruby-on-rails - 在 Rails 6 中 Webpacker 在 image_pack_tag 的帮助下使用(添加)图像到 html
- rust - 一个 Rust 函数,用于在压缩文件的行上返回一个迭代器
- android - android:textSize 在 MotionLayout 中的变化
- php - 如何在 php 中的 Google adwords api Traffic Estimator Service 中设置估计的最大每日费用
- azure-devops - Azure DevOps 将 Nuget 发布到托管源
- php - 如何确认http post请求是否已在flutter中发布?