简体   繁体   English

如何检查用户类型并将它们引导到 Django 中的相应页面?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM