繁体   English   中英

用户身份验证无法正常工作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为的则为密码,这是正常的,但是当我使用身份验证时,则无法正常工作。 打印验证返回无

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日志使用用户名而不是电子邮件(Cf: 文档 )。

对于您在评论中的问题,它是Django-用Email登录的副本。 我邀请您在接受的答案中找到解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM