首页 > 解决方案 > 如何检查用户类型并将它们定向到 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)

标签: pythondjango

解决方案


你可以试试这个

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')
             
            

推荐阅读