Accessing request data
Introduction#
When working with an web application it’s sometimes important to access data included in the request, beyond the URL.
In Flask this is stored under the global request object, which you can access in your code via from flask import request.
Accessing query string
The query string is the part of a request following the URL, preceded by a ? mark.
Example: https://encrypted.google.com/search?hl=en&q=stack%20overflow
For this example, we are making a simple echo webserver that echos back everything submitted to it via the echo field in GET requests.
Example: localhost:5000/echo?echo=echo+this+back+to+me
Flask Example:
from flask import Flask, request
app = Flask(import_name=__name__)
@app.route("/echo")
def echo():
to_echo = request.args.get("echo", "")
response = "{}".format(to_echo)
return response
if __name__ == "__main__":
app.run()Combined form and query string
Flask also allows access to a CombinedMultiDict that gives access to both the request.form and request.args attributes under one variable.
This example pulls data from a form field name submitted along with the echo field in the query string.
Flask Example:
from flask import Flask, request
app = Flask(import_name=__name__)
@app.route("/echo", methods=["POST"])
def echo():
name = request.values.get("name", "")
to_echo = request.values.get("echo", "")
response = "Hey there {}! You said {}".format(name, to_echo)
return response
app.run()
Accessing form fields
You can access the form data submitted via a POST or PUT request in Flask via the request.form attribute.
from flask import Flask, request
app = Flask(import_name=__name__)
@app.route("/echo", methods=["POST"])
def echo():
name = request.form.get("name", "")
age = request.form.get("age", "")
response = "Hey there {}! You said you are {} years old.".format(name, age)
return response
app.run()