登陆视图
def user_login(request):
"""登陆视图"""
if request.method == 'GET':
return render(request, 'login.html')
elif request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
return redirect('/index/')
else:
return render(request, 'login.html', {'err': "用户名或者密码错误"})
定义类允许使用邮箱进行登陆
需要在settings 中进行配置:配置如下:
AUTHENTICATION_BACKENDS = (
'users.views.CustomBackend',
)
使用邮箱进行验证登陆的类的实现
class CustomBackend(ModelBackend):
"""验证用户 让用户可以使用邮箱登陆"""
def authenticate(self, username=None, password=None, **kwargs):
try:
print(username)
user = UserProfile.objects.get(Q(username=username)|Q(email=username))
if user.check_password(password):
return user
except Exception as err:
return None