Django-security-session: проблема с потерей переменной сессии при истечении срока действия сессии
Я разрабатываю приложение, и у меня есть некоторые переменные сессии, используемые в представлениях.
Я использую django-security-session для выхода пользователя из системы. Но когда пользователь входит в систему после выхода с помощью django-security-session, он перенаправляется на последнюю посещенную страницу/вид, как и должно быть (нормальное поведение django-security-session)
Но моя проблема в том, что при использовании переменной сессии в представлениях, когда пользователь выбывает, переменные сессии теряются, и возникает ошибка.
Возможно, у меня нет хорошей "практики" использования переменных сессий таким образом... но пока я хотел бы продолжать использовать их, если это возможно.
Как я могу справиться с этой проблемой?
settings.py
SESSION_SECURITY_WARN_AFTER = 14*60
SESSION_SECURITY_EXPIRE_AFTER = 15*60
views.py
@method_decorator(login_required, name="dispatch")
class EligibiliteUpdate(SuccessMessageMixin, UpdateView):
model = Eligibilite
form_class = EligibiliteForm
template_name = "ecrf/eligibilite_form.html" # nom template à utiliser avec CBV : [nom_model]_form.html
success_message = "La fiche Eligibilite a été modifiée."
def get_success_url(self):
return reverse("ecrf:patient", args=[Patient.objects.get(pat = Eligibilite.objects.filter(ide = self.kwargs["pk"]).first().pat.pat).ide])
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
patient = self.request.session.get("patien # <= session variable lost when user is logout
context["form_name"] = "eligibilite"
context["ide"] = self.kwargs["pk"]
context["exist"] = Eligibilite.objects.filter(pat = patient.ide).exists() # <= error raised
# creation
context["eli_sai_log"] = Eligibilite.objects.get(ide = self.kwargs["pk"]).eli_sai_log
context["eli_sai_dat"] = Eligibilite.objects.get(ide = self.kwargs["pk"]).eli_sai_dat
# lock
context["is_locked"] = Eligibilite.objects.get(ide = self.kwargs["pk"]).ver
context["user_has_lock"] = Eligibilite.objects.get(ide = self.kwargs["pk"]).ver_usr
context["lock_date"] = Eligibilite.objects.get(ide = self.kwargs["pk"]).ver_dat
return context
def get_form_kwargs(self):
kwargs = super(EligibiliteUpdate, self).get_form_kwargs()
kwargs["ide"] = self.kwargs["pk"]
kwargs["patient"] = None
kwargs["user"] = self.request.user
return kwargs
def form_valid(self, form):
form.instance.eli_sai_log = self.request.user.username
form.save()
return super().form_valid(form)