[英]Django Authenticate method not working on custom Model
我正在嘗試內置方法 authenticate() 來登錄員工,但這似乎不起作用。 我沒有使用 django 提供的默認 model 用戶,而是在這里使用了我自己的 model 員工。
這是我的views.py
def login(request):
if request.method == 'POST':
password = request.POST['password']
emailid = request.POST['email']
employee = auth.authenticate(username=emailid,password=password)
if employee is not None:
auth.login(request,employee)
return render(request,'register/html')
else:
messages.error(request,'Email id dosent exist')
return redirect('login')
else:
return render(request,'employee/login.html')
而我的自定義代碼進行身份驗證
def login(request):
if request.method == 'POST':
password = request.POST['password']
emailid = request.POST['username']
if Employee.objects.filter(firstname=emailid).exists():
if Employee.objects.filter(password=password):
messages.success(request,'Loged Out')
return redirect('vacant-rooms')
else:
messages.error(request,'Wrong emailid')
return redirect('login')
else:
messages.error(request,'wrong password')
return redirect('login')
else:
return render(request,'employee/login.html')
這是我的 model
class Employee(models.Model):
firstname = models.CharField(max_length=15)
lastname = models.CharField(max_length=15)
age = models.IntegerField()
sex = models.CharField(max_length=10)
phoneno = models.IntegerField()
emailid = models.CharField(max_length=25)
address = models.CharField(max_length=50)
salary = models.IntegerField()
designation = models.CharField(max_length=10)
password = models.CharField(max_length=10)
aadharno = models.CharField(max_length=15)
datejoined = models.DateField(default=timezone)
這可能是一個愚蠢的問題,但身份驗證不起作用是因為我的 model 中沒有用戶名字段嗎?
我認為你不應該那樣做。 Django 已經有一個用戶基礎設施,並且要使用身份驗證等功能,您需要繼承 AbstractUser 或 AbstractBaseUser 類之一。 如果你只是這樣定義模型,你必須做很多Django已經做過的工作,我絕對不推薦它。 我在下面留下了一些有用的文檔和文章。 如果您需要任何幫助,請寫評論,我會盡我所能提供幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.