0
0
Flaskframework~5 mins

Request context in Flask

Choose your learning style9 modes available
Introduction

The request context in Flask helps your app know details about the current web request, like the URL or form data. It makes it easy to access this info anywhere while handling that request.

When you want to get information about the current web request, like headers or form inputs.
When you need to access the current user's session data during a request.
When writing functions that depend on request details but are not directly inside a route.
When you want to safely use request data in background tasks triggered by a request.
Syntax
Flask
from flask import Flask, request

app = Flask(__name__)

# Access request data inside a route
@app.route('/example', methods=['GET', 'POST'])
def example():
    user_agent = request.headers.get('User-Agent')
    form_data = request.form.get('name')
    return f"User agent: {user_agent}, Name: {form_data}"

The request object is available only when Flask is handling a request.

Flask uses the request context to keep track of the current request data behind the scenes.

Examples
Get the visitor's IP address from the request context.
Flask
from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def home():
    ip = request.remote_addr
    return f"Your IP is {ip}"
Access form data sent by the user in a POST request.
Flask
from flask import Flask, request

app = Flask(__name__)

@app.route('/submit', methods=['POST'])
def submit():
    username = request.form.get('username')
    return f"Hello, {username}!"
Read the User-Agent header from the request to know the browser info.
Flask
from flask import Flask, request

app = Flask(__name__)

@app.route('/agent')
def agent():
    agent = request.headers.get('User-Agent')
    return f"Your browser is {agent}"
Sample Program

This Flask app has one route /greet. It reads the name from URL query parameters or form data. It also reads the browser info from the request headers. Then it returns a greeting message including both.

Flask
from flask import Flask, request

app = Flask(__name__)

@app.route('/greet', methods=['GET', 'POST'])
def greet():
    name = request.args.get('name') or request.form.get('name') or 'Guest'
    user_agent = request.headers.get('User-Agent')
    return f"Hello, {name}! Your browser is {user_agent}."

if __name__ == '__main__':
    app.run(debug=True)
OutputSuccess
Important Notes

The request object only works inside a request context, like inside route functions.

Trying to use request outside a request (like at app startup) will cause errors.

You can use with app.test_request_context(): to create a request context for testing.

Summary

The request context holds info about the current web request.

Use request to get data like headers, form inputs, and client IP.

It works only while handling a request, inside route functions or similar.