0

爲什麼我不能設法得到我的登錄工作..登錄與電子郵件的代碼錯誤

views.py

def candidate_login(request): 
    if request.method == 'POST': 
     email = request.POST.get('email') 
     password = request.POST.get('password') 

     user = authenticate(email=email,password=password) 

     if user: 
      if user.is_active & user.check_password(password): 
      login(request,user) 
      return HttpResponseRedirect(reverse('index')) 
      else: 
      HttpResponse("Account not active, please contact Admin") 
     else: 
      print("Someone tried to login and failed") 
      return HttpResponse("Invalid login detailed supplied!") 
    else: 
     return render(request,'candidate_login.html',{}) 

當我嘗試登錄我得到的error消息:無效的登錄詳細供應!

你能幫我把它工作嗎? THK你非常 拉斐爾

models.py

from django.db import models 
from django.contrib.auth.models import AbstractUser 

# Create your models here. 


class MyUser(AbstractUser): 
    is_hr = models.BooleanField(default=False) 
    is_candidate = models.BooleanField(default=False) 
    is_employee = models.BooleanField(default=False) 
    company = models.CharField(max_length=100, default='') 
+0

不是問題,但你不需要調用'user.check_password';這已經在'authenticate'中完成了。無論如何,在Python中是布爾值,只是'和',而不是'&'。 –

+0

電子郵件是否被用作用戶名?你有沒有使用自定義的'用戶'模型? –

+0

嗨Sachin,是的,我使用了一個自定義用戶模型!我編輯我的文章喲顯示我的model.py。使用電子郵件作爲用戶名是什麼意思? – Ben2pop

回答

1

authenticate需要用戶名&密碼來驗證。您可以直接過濾用戶模型以獲取與給定電子郵件鏈接的用戶,然後使用check_password函數驗證密碼。

def candidate_login(request): 
    if request.method == 'POST': 
     email = request.POST.get('email') 
     password = request.POST.get('password') 

     user = User.objects.filter(email=email) 

     if user: 
      user=user[0] 
      if user.is_active & user.check_password(password): 
      login(request,user) 
      return HttpResponseRedirect(reverse('index')) 
      else: 
      HttpResponse("Account not active, please contact Admin") 
     else: 
      print("Someone tried to login and failed") 
      return HttpResponse("Invalid login detailed supplied!") 
    else: 
     return render(request,'candidate_login.html',{}) 
+0

Awsome !!你真是太棒了! 我只是不得不改變用戶= MyUser.objects.filter(電子郵件=電子郵件),因爲我使用自定義模型 – Ben2pop

相關問題