Import the request object and read the attribute for the part of the request you need. request looks like a global, but it is a context-local proxy, so each worker sees only the request it is handling.
from flask import request
@app.route('/form', methods=['POST'])
def handle_form():
# Form data
username = request.form['username']
email = request.form.get('email', '')
# Files
if 'file' in request.files:
file = request.files['file']
# Headers
auth_header = request.headers.get('Authorization')
# Cookies
session_id = request.cookies.get('session_id')
return 'Data processed'
request.formholds fields from a form body.form['username']raises aKeyErrorwhen the field is missing, and Flask turns that into400 Bad Request.form.get()returns a default instead.request.filesholds uploads. It stays empty unless the form was sent asmultipart/form-data.request.headersandrequest.cookieswork like dictionaries, soget()is the safe way to read them.
Other parts sit beside these. request.args holds the query string, request.get_json() parses a JSON body, and request.method gives the HTTP method.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓