版权声明:本文为博主原创文章,未经博主允许不得转载。 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 %}