Sessions help remember who a user is while they browse your site. Session expiry makes sure this memory doesn't last forever, keeping things safe and tidy.
Session expiry behavior in Django
SESSION_COOKIE_AGE = 1209600 # Time in seconds (default 2 weeks) SESSION_EXPIRE_AT_BROWSER_CLOSE = False # To set session expiry in a view: request.session.set_expiry(value) # value can be: # - an integer (seconds) # - 0 (expire on browser close) # - None (use global settings)
SESSION_COOKIE_AGE sets how long sessions last by default.
SESSION_EXPIRE_AT_BROWSER_CLOSE makes sessions end when the browser closes if set to True.
SESSION_COOKIE_AGE = 3600 # Sessions last 1 hour
SESSION_EXPIRE_AT_BROWSER_CLOSE = Truedef my_view(request): request.session.set_expiry(300) # expire after 5 minutes return HttpResponse('Session set to 5 minutes')
def my_view(request): request.session.set_expiry(0) # expire on browser close return HttpResponse('Session expires on browser close')
This example has two views. One sets a session that expires in 10 seconds and stores a user name. The other checks if the session still has the user.
from django.http import HttpResponse def set_short_session(request): # Set session to expire after 10 seconds request.session.set_expiry(10) request.session['user'] = 'Alice' return HttpResponse('Session set for 10 seconds') def check_session(request): user = request.session.get('user', 'No session') return HttpResponse(f'User in session: {user}')
Session expiry counts from the last user activity, so it resets if the user keeps interacting.
Setting expiry to 0 means the session ends when the browser closes, which is good for sensitive data.
Always test session expiry behavior in your browser's private mode to avoid cached sessions.
Sessions remember users but should not last forever for safety.
You can control session length globally or per user with set_expiry().
Use session expiry to improve security and user experience.