Объект Django 'AnonymousUser' не имеет атрибута '_meta' для входа по электронной почте
Я пытаюсь разрешить вход как по электронной почте, так и по имени пользователя в проекте Django, поэтому я добавил дополнительные бэкенды в свой settings.py
файл.
AUTHENTICATION_BACKENDS = (
"accounts.auth.AuthenticationEmailBackend",
"django.contrib.auth.backends.ModelBackend",
)
а это файл представлений
def login_view(request):
if request.method == 'POST':
email =request.POST['username']
password = request.POST['password']
user = authenticate(username=email, password=password)
print(user)
#if user is not None:
login(request,user,backend="accounts.auth.AuthenticationEmailBackend")
return redirect('/')
else:
pass
return render(request,'accounts/login.html')
и это бэкэнд
class AuthenticationEmailBackend(object):
def authenticate(self, username=None, password=None, **kwargs):
UserModel = get_user_model()
try:
user = UserModel.objects.get(email=username)
except UserModel.DoesNotExist:
return None
else:
if user.check_password(password):
return user
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
когда я использую свой email, я получаю эту ошибку, когда я нажимаю кнопку входа на моей форме, но когда я использую свое имя пользователя, все работает нормально и я могу войти в свой аккаунт
'AnonymousUser' object has no attribute '_meta'
Просто добавьте это в файл settings.py:
AUTH_USER_MODEL = 'appanme.AuthenticationEmailBackend'
И проверьте, решит ли это вашу ошибку