В Контрольная точка 1 , request.user
доступна и is_authenticated
- True
.
from django.shortcuts import render, redirect
from .forms import LoginForm
from django.contrib.auth import authenticate, login, logout
from django.urls import reverse
def login_view(request):
if request.user.is_authenticated:
return redirect('publicusers:dashboard', permanent=True)
else:
context = {
"head_title": "Login",
"page_title": "Login Page",
"content": "Login Content",
}
# POST
if request.method == "POST":
login_form = LoginForm(request.POST)
context["login_form"] = login_form
if login_form.is_valid():
username = login_form.cleaned_data['username']
password = login_form.cleaned_data['password']
user = None
try:
user = authenticate(request, username=username, password=password)
except:
context["error_message"] = "There was an error authenticating."
return render(request, "login.html", context)
if user is not None:
if user.is_active:
login(request, user, backend='publicusers.backends')
# Checkpoint 1
print('User:', type(user), request.user, request.user.is_authenticated, request.session)
return redirect(reverse('publicusers:dashboard'), context)
else:
context["error_message"] = "Your account has been deactivated."
return render(request, "login.html", context)
else:
context["error_message"] = "Invalid account."
return render(request, "login.html", context)
else:
context["error_message"] = "Invalid credentials."
return render(request, "login.html", context)
else:
# GET
login_form = LoginForm()
context["login_form"] = login_form
return render(request, "login.html", context)
В Контрольная точка 2 , request.user.is_authenticated
-False
;но request.session
доступен и печатает разные результаты в обеих функциях.
def dashboard_view(request):
# Checkpoint 2
print('Dashboard:', request.user.is_authenticated, request.session)
if not request.user.is_authenticated:
return redirect('publicusers:login', permanent=True)
context = {
"head_title": "Dashboard",
"page_title": "Dashboard Page",
"content": "Dashboard Content",
}
return render(request, "dashboard.html", context)
Любая помощь будет принята с благодарностью.