Django: функция аутентификации и входа работает, но пользователь фактически не вошел в систему

У меня есть проблема, связанная с регистрацией пользователя в Django.

В строках кода ниже я попытался использовать функцию login для входа пользователя в систему, но когда пользователь попадает на главную страницу, страница сообщает ему о необходимости войти в систему (что означает, что django сказал мне, что он не аутентифицирован); функция login не выдает никаких ошибок вообще.

login/login.py

def login_user(request):
    if request.method == "POST":
        form = forms.Login(request.POST)
        if form.is_valid():
            username = request.POST['username']
            password = request.POST['password']
            db_user = AuthBackend().authenticate(request, username=username, password=password)

            if db_user is not None:
                login(request, db_user, backend="django.contrib.auth.backends.ModelBackend")
                return HttpResponseRedirect(reverse("main:index"))
            else:
                return render(request, "login/login.html", {"form": form, "error": "Incorrect"})

        else:
            return render(request, "login/login.html", {"form": form})

    return render(request, "login/login.html", {"form": forms.Login()})

main/templates/main/index.html

<!DOCTYPE html>
<html>
    <head>
        <title>Timeline</title>
    </head>
    <body>
        {% if user.is_authenticated %}
            <a href="{% url 'account' %}">Account</a>
        {% else %}
            <a href="{% url 'login:login' %}">Log In</a>
        {% endif %}
    </body>
</html>

также, я очень новичок в стеке и задаю вопросы, так что если мне нужно предоставить другую информацию, я буду благодарен за напоминание и постараюсь быть полезным, насколько это возможно. спасибо

Попробуйте это в login.py:

...
from django.contrib.auth import authenticate, login, logout

def login_user(request):
    if request.method == "POST":
        form = forms.Login(request.POST)
        if form.is_valid():
            username = request.POST['username']
            password = request.POST['password']
            db_user = authenticate(request, username=username, password=password)

            if db_user is not None:
                login(request, db_user)
                return HttpResponseRedirect(reverse("main:index"))
            else:
                return render(request, "login/login.html", {"form": form, "error": "Incorrect"})

        else:
            return render(request, "login/login.html", {"form": form})

    return render(request, "login/login.html", {"form": forms.Login()})
Вернуться на верх