user is not getting authenticated when i try to login.
this my register code
def register(request):
if request.method == "POST":
username = request.POST["name"]
email = request.POST["email"]
password = request.POST["password"]
password2 = request.POST["password2"]
try:
if password2 != password:
messages.error(request, "password did'nt match")
elif User.objects.get(email=email):
messages.error(request, "user already exists")
except:
if email and username:
user = User.objects.create_user(username=username, email=email)
user.set_password(password)
user.save()
messages.success(request, "user created")
else:
messages.error(request, "Looks like user already exists")
return render(request, 'register.html', {})
this if my login code if i am using user.object.get for email and check_password for password it,s working but when i am using authenticate it,s not working . printing authenticate is returning None
def login(request):
if request.method == "POST":
email = request.POST["email"]
password = request.POST["password"]
print email
print password
try:
user = authenticate(email=email , password=password)
if user is not None:
login(request, user)
return redirect('dashbord')
else:
messages.error(request, "password yesn't match")
except:
messages.error(request, "login fail plz check ur password or email again")
return render(request, 'login.html', {})
According to your comment, you are using default authentication system, but you authenticate with this line :
user = authenticate(email=email , password=password)
The fix, according to your question, is :
email = request.POST["email"]
username = request.POST["name"]
user = authenticate(username=username , password=password)
By default, django log with username, not with email (Cf : the documentation ).
For your question in the comment, it is a duplicate of Django - Login with Email. I invite you to find your solution in the accepted answer.