django使用用户名或手机号码登录

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']

猜你喜欢

转载自www.cnblogs.com/chichung/p/9968597.html