Concept Flow - G object for request-scoped data
Start Request
Create g object
Store data in g
Use g data in view
Request ends
g data cleared
Each web request creates a fresh g object to store data accessible only during that request.
from flask import Flask, g, request app = Flask(__name__) @app.before_request def before(): g.user = request.headers.get('User') @app.route('/') def index(): return f"Hello, {g.user}!"
| Step | Action | g.user value | Output |
|---|---|---|---|
| 1 | Start request, create g | unset | No output yet |
| 2 | before_request runs, sets g.user = 'Alice' | 'Alice' | No output yet |
| 3 | index() reads g.user | 'Alice' | Returns 'Hello, Alice!' |
| 4 | Request ends, g cleared | unset | No output |
| Variable | Start | After Step 2 | After Step 3 | Final |
|---|---|---|---|---|
| g.user | unset | 'Alice' | 'Alice' | unset (cleared after request) |
Flask's g object stores data only during one request. Use g to save info like current user or db connection. Set g values in before_request or view functions. Data in g is cleared after request ends. Do not use g for data sharing between requests.