Django - Защита/перенаправление страницы после удаления сессии, необходимой для просмотра этой страницы
Я использую внешний API для аутентификации. В представлении я поместил request.session для отображения, после правильного входа, информации о пользователе, которую я получаю от этого API. Все работает (вход/выход/отображение информации). В шаблоне я показываю информацию о пользователе только если сессия активна/действительна после правильного входа. Но после выхода из системы (удаляю эту сессию в просмотре logout), если я пытаюсь получить доступ к этой информационной странице, информация не отображается, а выдается ошибка "KeyError at..." | и имя сессии. Хорошо, что теперь информация отображается, но я хочу перенаправить с этой страницы, если сессия не активна/действительна, и я не знаю как. Я пытался использовать @login_required, но в моем случае пользователь не является нормальным, потому что я использую аутентификацию через API. Подскажите, как перенаправить из шаблона/страницы (view def dashboard), если сессия не активна/была удалена? Спасибо. Ниже приведены мои настройки
view.py
def loginPL(request):
if request.method == 'POST':
client = Client(wsdl='http://.....Http?wsdl')
marca = request.POST['marca']
parola = request.POST['parola']
try:
login = (client.service.Login(marca, parola))
except:
messages.error(request, "")
if login > 0:
# print(login)
request.session['loginOk'] = login
return redirect('login:dashboard')
else:
messages.error(request, "utilizatorul sau parola nu sunt corecte / valide!")
request.session.modified = True
return render(request, 'login/login.html')
def dashboard(request):
client = Client(wsdl='http://.....Http?wsdl')
id = request.session['loginOk']
info = (client.service.GetUserInfo2(id))
context = {'info' : info}
return render (request, 'login/dashboard.html', context)
def logoutPL(request):
del request.session['loginOk']
return redirect('login:login')
urls.py
app_name = 'login'
urlpatterns = [
path('', views.loginPL, name='login'),
path('dashboard-utilizator-profilearning/', views.dashboard, name='dashboard'),
path('logout/', views.logoutPL, name='logout'),
]
шаблон(dashboard.html)
{% block content %}
{% if request.session.loginOk %}
<h1>dashboard user profilearning</h1>
{{info}}
{{info.DateEmployed}}
{{info.FullName}}
{% else %}
{% endif %}
{% endblock content %}