Объект 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'

И проверьте, решит ли это вашу ошибку

Вернуться на верх