Log in user using either email address or username in Django

后端 未结 13 2608
故里飘歌
故里飘歌 2020-12-02 08:34

I am trying to create an auth backend to allow my users to log in using either their email address or their username in Django 1.6 with a custom user model. The backend work

13条回答
  •  臣服心动
    2020-12-02 09:09

    Assuming you have blocked/forbidden against the username having an @, and you want to use the django User model.

    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            cd=form.cleaned_data
            if '@' in cd['username']:
                username=User.objects.get(email=cd['username']).username
            else:
                username=cd['username']
    
            user = authenticate(username=username,
                                    password=cd['password'])
    
            if user is not None and user.is_active:
                login(request,user)
                return redirect('loggedin')
            else:
                return render(request, 'login.html')
    

提交回复
热议问题