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.