django有自己的认证系统,会自动根据用户名和密码进行验证。如果需要使用用户名或手机登录的话,需要重写django的认证后台,并且设置到配置文件中。
-
重写django的认证后台
class UsernameMobileAuthBackend(ModelBackend):"""用户名或手机登录"""def authenticate(self, request, username=None, password=None, **kwargs):"""判断用户名(手机号码)和密码是否正确"""query_set = User.objects.filter( Q(username=username) | Q(mobile=username))try:if query_set.exists():user = query_set.get()if user.check_password(password):return userexcept:return Nonereturn None
-
设置到django配置文件
# 自定义,可以手机号码或用户名登录 AUTHENTICATION_BACKENDS = ['user.utils.UsernameMobileAuthBackend']