如何解决登录信息错误

时间:2020-08-09 11:16:41

标签: django

我已经创建了一个用户,并向他提供了所有必需的数据,但是我无法登录该页面,我确定电子邮件和密码正确无误,但是在输入的信息中却出现了错误。

模板:

<form  action="" method="post" class="border rounded overflow-hidden p-5">
                             {% csrf_token %}
                            <h4 class="text-center py-3 title">Login </h4>

                                          {% for message in messages %}
                              <div class="btn btn-sm btn-dark col-6" role="alert">
                                   <h3 class="text-center">  {{ message }}</h3>
                                                       </div>
                                                             {% endfor %}


                            <div class="row">
                                <div class="form-group col-md-12 text-left px-0">
                                    <label for="email">Email</label>
                                    <input  class="border rounded-2 p-3 bg-input " type="email" name="email" id="email" placeholder="Email ">
                                </div>
                                <div class="form-group col-md-12 text-left px-0">
                                    <label for="password">Password </label>
                                    <input  class="border rounded-2 p-3 bg-input " type="password" class="form-control" id="password" name="password">
                                </div>
                                <button  class="btn btn-sm btn-dark col-12 rounded-2 my-4 p-3" type="submit">Login  </button>
                              
                            </div>
                        </form>

我的观点:

      from django.contrib.auth import authenticate,login
    from django.shortcuts import render,redirect
    from django.contrib.auth.models import auth,Group
    from django.contrib import messages
    from django.conf import settings
    from django.contrib.auth.decorators import login_required
    from .decorators import uthenticated_user
    from app.models import *
    # Create your views here.
@uthenticated_user
def login(request):
    if request.method=='POST':
        email=request.POST['email']
        password=request.POST['password']
        user=authenticate(request,email=email,password=password)
        if user is not None:
            login(request,user)
            return redirect('user_home')
        else:
            messages.error(request,'There was a problem logging in. Check your email and password or create an account')
            return redirect('login')
    else:
        return render(request,'registration/sign-in.html')

                                                                                                  

1 个答案:

答案 0 :(得分:0)

据我所知,authenticate仅使用用户名和密码。您可以先尝试通过电子邮件查找用户名,然后对他进行身份验证:

@uthenticated_user
def login(request):
    if request.method=='POST':
        email=request.POST['email']
        password=request.POST['password']

        # New code
        try:
            username = User.objects.get(email=email).username
        except User.DoesNotExist:
            username = None
        user=authenticate(request,username=username,password=password)
        
        if user is not None:
            login(request,user)
            return redirect('user_home')
        else:
            messages.error(request,'There was a problem logging in. Check your email and password or create an account')
            return redirect('login')
    else:
        return render(request,'registration/sign-in.html')