6-3-登陆-2

通过邮箱登陆

  • 在setting中重载变量(是一个元组方法)

AUTHENTICATION_BACKENDS = (
'users.views.CustomBackend',
)

元组一点要加“,”


  • 在users的views.py写入一个类(该类里这个方法会被django自动调用)

from django.contrib.auth.backends import ModelBackend
from .models import UserProfile
class CustomBackend(ModelBackend):
def authenticate(self, username=None, password=None, **kwargs):
try:
user = UserProfile.objects.get(username = username)
if user.check_password(password): #UserProfile继承的是AbstractUser的方法#
return user
except Exception as e:
return None

django密码存储的是密文,无法查询
UserProfile继承的是AbstractUser


  • 在viwes.py中以下三行打断点进行Debug


try:
user = UserProfile.objects.get(username = username)
if user is not None:

F8完成当前debug F6调试进入debug下一步


  • 在元组中做并集以使邮箱 手机号等 都能登陆


from django.db.models import Q
user = UserProfile.objects.get(Q(username = username)|Q(email=username))

并集的查询 也可以做并集和交集的混用 在后面加,即可加入


用户密码错误提醒
else:
return render(request, "login.html", {"msg":"用户名或密码错误!"})

在view中加入msg
再到login中加入{{ msg }}

你可能感兴趣的:(6-3-登陆-2)