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 user except: return None return None
-
设置到django配置文件
# 自定义,可以手机号码或用户名登录 AUTHENTICATION_BACKENDS = ['user.utils.UsernameMobileAuthBackend']