Remember Me (Persistent Sessions)

A snippet showing how to add persistent login sessions with 'remember me'.


# views.py

from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect

def login_view(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        remember = request.POST.get('remember_me')  # checkbox value
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            if not remember:
                request.session.set_expiry(0)
            return redirect('home')
    return render(request, 'login.html')
  

# templates/login.html

<h2>Login</h2>
<form method="POST">
  {% csrf_token %}
  <input type="text" name="username" placeholder="Username">
  <input type="password" name="password" placeholder="Password">
  <label><input type="checkbox" name="remember_me"> Remember Me</label>
  <button type="submit">Login</button>
</form>
  
Explanation:
  • The remember me checkbox allows users to stay logged in even after closing the browser.
  • If the checkbox is not selected, request.session.set_expiry(0) makes the session expire when the browser closes.
  • When selected, the session uses the default expiry (usually 2 weeks) set in Django settings.
  • You can customize session duration using SESSION_COOKIE_AGE in settings.py.
Never miss a story on Django.wiki

Subscribe for fresh tutorials, snippets, and updates.

By subscribing you agree to our Privacy Policy.