导入
from django.contrib.auth import authenticate,login
# 获取账号密码
user_name = request.POST.get('username')
pass_word = request.POST.get('password')
# 表单验证,获取字典数据交给表单
loing_forms = UserLoginForms(request.POST)
#效验表单
if loing_forms.is_valid():
# 检验账号密码是否正确
is_user = authenticate(username=user_name, password=pass_word)
# 判断返回值是不为空则账号密码正确
if is_user != None:
# 写入信息
login(request, is_user)
return render(request, 'index.html')
else:
return render(request, 'login.html', {'msg': '用户名或密码错误'})
支持邮箱登录
from django.contrib.auth.backends import ModelBackend
from django.db.models import Q
class CustomBackend(ModelBackend): #新建CustomBackend类继承
def authenticate(self, request, username=None, password=None, **kwargs):
try: #查询数据库里是否
#Q(username='xxx'),查有xxx到就返回真
user = UserProfile.objects.get(Q(username=username)|Q(email=username))
return user
except Exception as e:
return None
#警告 重写Django自带的类后一应要在setting里重载这个类
AUTHENTICATION_BACKENDS = (
'users.views.CustomBackend', #重载类的路径
)