在 Django 中,如何確保一種型別的用戶無法以另一種型別的用戶身份登錄?例如,如果我的網站上有兩種型別的用戶,教師和學生,教師應該不能使用他們的憑據以學生身份登錄,反之亦然。
class Teacher(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
name = models.CharField(max_length=200, default="")
email = models.CharField(max_length=200, unique=True)
class Student(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
name = models.CharField(max_length=200, default="")
email = models.CharField(max_length=200, unique=True)
uj5u.com熱心網友回復:
您可以通過使用user_passes_test來實作它
讓我們說只有學生應該訪問注冊頁面,因此您可以創建 user_passes_function 如果用戶是學生則回傳 True 否則回傳 False 并裝飾 student_registation 視圖,如下面的代碼片段所示
from django.contrib.auth.decorators import user_passes_test
from django.shortcuts import get_object_or_404
def student_check(user):
try:
get_object_or_404(Student, user=user)
except:
return False
else:
return True
@user_passes_test(student_check)
def student_registration(request):
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/345165.html
上一篇:使矩陣中的行垂直
