如何在django中设置用邮箱也可以登录?

首先在view.py中构建一个类集成ModelBackend,在这个类里重写authenticate,通过Q添加邮箱验证的方式。

from django.contrib.auth.backends import ModelBackend
from django.db.models import Q
class CustomBackend(ModelBackend):
def authenticate(self, username=None, password=None, **kwargs):
try:
user = UserProfile.objects.get(Q(username=username)|Q(email=username)) #UserProfile是我自己写的用户类替代了系统默认的user类
if user.check_password(password):
return user
except Exception as e:
return None
然后在settings中添加:
AUTHENTICATION_BACKENDS = (
'users.views.CustomBackend',
)
posted @ 2017-06-14 23:34  叉歪叉  阅读(324)  评论(0编辑  收藏  举报