hlkstuv_23900
hlkstuv_23900

Reputation: 882

Delete session key when browser is refreshed ( Django )

How do I delete session when the browser is refreshed by the user? I do know, the following deletes the session key.

del request.session['session_key']

Edit: I am trying to propagate user entered value across multiple forms in different views, and for that I am using session variable. However, when the user manually refreshed the page, I want to clear the session keys.

Upvotes: 0

Views: 3130

Answers (1)

Glyn Jackson
Glyn Jackson

Reputation: 8354

There is no way in Django (I can think of) to know if a page has been refreshed or just starting a new session, page etc. You could do something with the request and Javascript.

If after a page has finished loading you want to just remove all sessions dependant where you want this to happen, look at Signals or just removing the sessions after the request has finished in your view.

Re: deleting all sessions...

flush() Deletes the current session data from the session and deletes the session cookie. The user will remain logged in. https://docs.djangoproject.com/en/1.8/topics/http/sessions/#django.contrib.sessions.backends.base.SessionBase.flush

If you just want to delete each session key (and keep the user logged in) then do:

for key in request.session.keys():
    del request.session[key]

This deletes each session in request.session.

Upvotes: 1

Related Questions