用户身份验证不起作用 Django
user authenticate is not working Django
当我尝试登录时,用户未通过身份验证。
这是我的注册码
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', {})
如果我使用 user.object.get 作为电子邮件和 check_password 作为密码,我的登录代码可以正常工作,但是当我使用身份验证时,它不起作用。打印身份验证正在返回 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', {})
根据您的评论,您使用的是默认身份验证系统,但您使用此行进行身份验证:
user = authenticate(email=email , password=password)
根据您的问题,解决方法是:
email = request.POST["email"]
username = request.POST["name"]
user = authenticate(username=username , password=password)
默认情况下,django 使用用户名而不是电子邮件登录(参见:the documentation)。
对于您在评论中的问题,它与 重复。
我邀请您在已接受的答案中找到您的解决方案。
当我尝试登录时,用户未通过身份验证。
这是我的注册码
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', {})
如果我使用 user.object.get 作为电子邮件和 check_password 作为密码,我的登录代码可以正常工作,但是当我使用身份验证时,它不起作用。打印身份验证正在返回 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', {})
根据您的评论,您使用的是默认身份验证系统,但您使用此行进行身份验证:
user = authenticate(email=email , password=password)
根据您的问题,解决方法是:
email = request.POST["email"]
username = request.POST["name"]
user = authenticate(username=username , password=password)
默认情况下,django 使用用户名而不是电子邮件登录(参见:the documentation)。
对于您在评论中的问题,它与