Before_request hooks let you run code before every web request. This helps prepare or check things before showing a page.
0
0
Before_request hooks in Flask
Introduction
Check if a user is logged in before showing a page
Set up database connections before handling requests
Log details about each request for tracking
Modify request data or headers before processing
Redirect users based on conditions before loading a page
Syntax
Flask
@app.before_request def function_name(): # code to run before each request
The function runs before every request automatically.
Use it to prepare or check things before your main route code runs.
Examples
This example checks if a user is logged in before any page loads. If not, it sends them to the login page.
Flask
@app.before_request def check_login(): if not session.get('user'): return redirect('/login')
This example opens a database connection before handling any request.
Flask
@app.before_request
def open_db():
g.db = connect_to_database()Sample Program
This Flask app uses a before_request hook to open a database connection and check if the user is logged in. If not logged in and not on the login page, it redirects to login. After login, the home page shows the DB connection info.
Flask
from flask import Flask, session, redirect, g, request app = Flask(__name__) app.secret_key = 'secret' def connect_to_database(): return 'DB Connection' @app.before_request def before(): g.db = connect_to_database() if not session.get('user') and request.path != '/login': return redirect('/login') @app.route('/login') def login(): session['user'] = 'user1' return 'Logged in!' @app.route('/') def home(): return f'Home page with {g.db}' if __name__ == '__main__': app.run(debug=False)
OutputSuccess
Important Notes
before_request functions run before every request, including static files unless filtered.
Return a response in before_request to stop further processing (like redirect).
Use Flask's g object to store data during a request.
Summary
before_request hooks run code before each web request.
They help prepare data, check conditions, or redirect users.
Return a response in the hook to stop normal route handling.