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()})