0
0
Flaskframework~5 mins

Before_request hooks in Flask

Choose your learning style9 modes available
Introduction

Before_request hooks let you run code before every web request. This helps prepare or check things before showing a page.

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.