What are Sessions?

Sessions allow you to store user-specific data on the server. Flask uses signed cookies to store session data, making it easy to maintain state across requests.

Using Sessions

Access session data:

from flask import Flask, session, redirect, url_for, request

app = Flask(__name__)
app.secret_key = 'your-secret-key-here'  # Required for sessions

@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    session['username'] = username
    return redirect(url_for('home'))

@app.route('/')
def home():
    if 'username' in session:
        return f'Logged in as {session["username"]}'
    return 'Not logged in'

Setting Session Values

Store data in session:

# Set single value
session['username'] = 'alice'
session['user_id'] = 123

# Set multiple values
session.update({
    'username': 'alice',
    'email': '[email protected]'
})

Reading Session Values

Retrieve session data:

# Get value
username = session.get('username')
user_id = session.get('user_id', 0)  # Default value

# Check if key exists
if 'username' in session:
    username = session['username']

Removing Session Data

Clear session values:

# Remove specific key
session.pop('username', None)

# Clear all session data
session.clear()

Session Configuration

Configure session behavior:

app.config['SECRET_KEY'] = 'your-secret-key'
app.config['SESSION_COOKIE_NAME'] = 'my_session'
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)

# Make session permanent
session.permanent = True

Best Practices

  • Use secret key: Always set SECRET_KEY
  • Don't store sensitive data: Sessions are client-side
  • Use secure cookies: In production with HTTPS
  • Clear on logout: Remove session data when user logs out

Next Steps

Learn about database integration for persistent storage, or explore forms for user input.