django 邮箱登陆的验证

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hejunw/article/details/80275025

要引用的app的 views.py 

邮箱的登陆是需要在models中查找相应的用户名和密码的 ,这里添加一个邮箱的的验证 导入相应的模块 

from django.contrib.auth.backends import ModelBackend
from django.db.models import Q
# Create your views here.
from users.models import UserIn

class CustomBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        try:
            user = UserIn.objects.get(Q(username=username) | Q(email=username))
            if user.check_password(password):
                return user
        except Exception as e:
            return None

settings.py添加

AUTHENTICATION_BACKENDS = (
    'users.views.CustomBackend',          #app-views.class
)

要登陆的app views

 登陆验证
def loginViews(request):
    if request.method == 'GET':
        form = loginForm()
        print "get loginViews "
        return render(request, 'rc_test/rc_login.html',context={'form':form })
    else:
        forms = loginForm(request.POST)
        if forms.is_valid():  # 如果格式正确 ,那就开始获取数据 username and password
            username = forms.cleaned_data.get('username', None)
            password = forms.cleaned_data.get('password', None)
            user = authenticate(username=username, password=password)
            print user
            if user is not None:
                # if user.is_active:
                login(request, user)  # 登陆验证,成功进入到index页面
                return HttpResponseRedirect(reverse("home"))
                # else:
                #     return render(request,'rc_test/rc_login.html',context={'error': '用户未激活'})
            else:
                return render(request, 'rc_test/rc_login.html', context={'error': '用户名和密码错误',"login_form":forms
                                                                         })
        else:
            return render(request, 'rc_test/rc_login.html',
                          context={'error': '用户名和密码不符合规则', "login_form": forms})

前端的登陆验证,但是这里注意,只有是激活的用户才可以显示 ,如果只是在数据库中有这个用户 ,而没有激活 ,是不能在前端页面显示出username的信息的 

html

                {% if request.user.is_authenticated %}
                    <div class="top-menu visible-desktop">
                        <ul class="pull-right">
                            <li class="icon-user"></li>
                            <li>{{ loginname }}</li>
                            <li><a href="{% url 'userlogout' %}" style="color: red">退出</a></li>
                        </ul>
                    </div>
                {% else %}
                    <div class="top-menu visible-desktop">
                        <ul class="pull-right">
                            <li class="icon-user"><a href="{% url 'loginViews' %}">登陆</a></li>
                        </ul>
                    </div>
                    <div class="top-menu visible-desktop">
                        <ul class="pull-left">
                            <a href="{% url 'registViews' %}">注册</a>
                        </ul>
                    </div>
                    <a class="btn btn-navbar visible-phone" data-toggle="collapse" data-target=".nav-collapse">
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </a>


                {% endif %}

猜你喜欢

转载自blog.csdn.net/hejunw/article/details/80275025