1. 自定义一个用户认证类:
from django.contrib.auth.backends import ModelBackend
from django.db.models import Q
class CustomAuth(ModelBackend):
"""自定义用户认证模块"""
def authenticate(self, request, username=None, password=None, **kwargs):
try:
user = UserProfile.objects.get(Q(username=username) | Q(mobile=username))
if user.check_password(password):
return user
except Exception as err:
return None
2. settings.py文件中增加认证配置
# 自定义用户认证类
AUTHENTICATION_BACKENDS = [
"apps.users.views.CustomAuth",
]
3. 这样登录的时候,既可以使用用户名和密码进行登录,也可以使用手机号和密码进行登录。