1.用户名、邮箱都能登陆的方法:
简述:导入auth里面的authenticate,login,ModelBackend 另外导入:db.models 下面的Q 通过重写一个CustomBackend类来继承ModelBackend在里面重构authenticate,完成后在setting里面配置auth指向新建的CustomBackend类,即可实现邮箱以及用户名都能登陆的方法。例子如下:
from django.contrib.auth import authenticate,login
from django.contrib.auth.backends import ModelBackend
from django.db.models import Q
#Q相当于数据库查询里面的or
from .models import UserProfile
# Create your views here.
class CustomBackend(ModelBackend):
def authenticate(self, request, username=None, password=None, **kwargs):
try:
user = UserProfile.objects.get(Q(username=username) | Q(email=username))
#调用UserProfile里面的check_password来检验密码是否正确。
if user.check_password(password):
return user
except Exception as e:
return None
2.登陆流程
简介:判断request.met