브랜든 맞아,이 작업을 수행하는 가장 간단한 방법 대신 장고의 기본의 백엔드를 정의하는 것입니다 의 당신의 settings.py에서이 를하자 :
AUTHENTICATION_BACKENDS = ('accounts.backend.EmailOrUsernameModelBackend')
계정/backend.py에서 다음
:
from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend as _ModelBackend
User = get_user_model()
class EmailOrUsernameModelBackend(_ModelBackend):
""" Authenticate user by username or email """
def authenticate(self, username=None, password=None):
if '@' in username:
kwargs = {'email': username}
else:
kwargs = {'username': username}
try:
user = User.objects.get(**kwargs)
if user.check_password(password):
return user
else:
return None
except User.DoesNotExist:
return None
def get_user(self, user_id=None):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
이제 사용자 이름 또는 이메일 로 로그인 할 수 있습니다 재미
01 되세요
사용자 이름과 이메일 주소를 기반으로 사용자를 인증 달성하는 데 도움이 될 것입니다 방법을 여기 읽을 수 있습니다 사용자 이름 : http://stackoverflow.com/a/16638473/821594 – stalk