Accéder aux données de la demande

Lorsque vous travaillez avec une application Web, il est parfois important d’accéder aux données incluses dans la requête, au-delà de l’URL.

Dans Flask, ceci est stocké sous l’objet global request, auquel vous pouvez accéder dans votre code via from flask import request.

Formulaire combiné et chaîne de requête

Flask permet également d’accéder à un CombinedMultiDict qui donne accès aux attributs request.form et request.args sous une seule variable.

Cet exemple extrait les données d’un champ de formulaire “name” soumis avec le champ “echo” dans la chaîne de requête.

Exemple de flacon :

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()

Accéder à la chaîne de requête

La chaîne de requête est la partie d’une requête qui suit l’URL, précédée d’un signe ?.

Exemple : https://encrypted.google.com/search?hl=fr&q=stack%20overflow

Pour cet exemple, nous créons un simple serveur Web echo qui renvoie tout ce qui lui est soumis via le champ echo dans les requêtes GET.

Exemple : localhost:5000/echo?echo=echo+this+back+to+me

Exemple de flacon :

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()

Accéder aux champs du formulaire

Vous pouvez accéder aux données de formulaire soumises via une requête “POST” ou “PUT” dans Flask via l’attribut “request.form”.

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()