Flash messages show quick notes to users after actions, like "Success" or "Error". They help users know what happened.
0
0
Flash messages for user feedback in Flask
Introduction
After a user submits a form to confirm the action worked.
To show errors when something goes wrong, like login failure.
To give temporary info, like "Profile updated".
When redirecting users and you want to pass a message.
To notify users about system status changes.
Syntax
Flask
from flask import flash flash('Your message here', 'category')
The flash() function stores a message for the next page load.
The optional category helps style messages differently, like 'error' or 'success'.
Examples
Shows a success message after login.
Flask
flash('Login successful', 'success')
Shows an error message if login fails.
Flask
flash('Invalid password', 'error')
Shows a default message without category.
Flask
flash('Welcome back!')Sample Program
This Flask app shows a form to enter a username. When submitted, it flashes a success message if a username is entered or an error if empty. The messages appear on the page with colors.
Flask
from flask import Flask, render_template_string, request, redirect, url_for, flash, get_flashed_messages app = Flask(__name__) app.secret_key = 'secret123' # Needed for flashing messages @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': username = request.form.get('username', '') if username: flash(f'Welcome, {username}!', 'success') return redirect(url_for('index')) else: flash('Please enter a username.', 'error') return redirect(url_for('index')) messages = get_flashed_messages(with_categories=True) return render_template_string(''' <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Flash Messages Demo</title> <style> body { font-family: Arial, sans-serif; padding: 2rem; } .flash { padding: 1rem; margin-bottom: 1rem; border-radius: 0.5rem; } .success { background-color: #d4edda; color: #155724; } .error { background-color: #f8d7da; color: #721c24; } </style> </head> <body> <h1>Enter your username</h1> <form method="POST"> <input type="text" name="username" aria-label="Username" required> <button type="submit">Submit</button> </form> {% for category, message in messages %} <div class="flash {{ category }}" role="alert">{{ message }}</div> {% endfor %} </body> </html> ''', messages=messages) if __name__ == '__main__': app.run(debug=True)
OutputSuccess
Important Notes
Always set app.secret_key to enable flashing.
Use get_flashed_messages(with_categories=True) to get messages with their categories for styling.
Flash messages last only for the next request, so they disappear after showing once.
Summary
Flash messages give quick feedback to users after actions.
Use flash() to store messages and display them in templates.
Categories help style messages differently, like success or error.