遵循上面给我的建议并进行更改后,
AUTHENTICATION_BACKENDS = ['yourapp.yourfile.EmailOrUsernameModelBackend']我遇到了错误
Manager isn't available; User has been swapped for 'users.User'。这是由于我使用的是默认用户模型,而不是我自己的自定义模型。这是工作代码。
from django.conf import settingsfrom django.contrib.auth import get_user_modelclass EmailOrUsernameModelBackend(object): """ This is a ModelBacked that allows authentication with either a username or an email address. """ def authenticate(self, username=None, password=None): if '@' in username: kwargs = {'email': username} else: kwargs = {'username': username} try: user = get_user_model().objects.get(**kwargs) if user.check_password(password): return user except User.DoesNotExist: return None def get_user(self, username): try: return get_user_model().objects.get(pk=username) except get_user_model().DoesNotExist: return None


