Flask Post Request

Salman Mehmood 15 février 2024
Flask Post Request

Nous apprendrons avec cette explication deux méthodes HTTP de base (get et post), et nous apprendrons également les différences entre elles, puis passerons par un exemple de base de la façon dont nous pouvons envoyer des données à partir d’un formulaire de base dans le Flask .

Utiliser la requête Post dans Flask

Nous expliquerons les méthodes HTTP, les requêtes get et post. Vous avez probablement déjà entendu les deux ; get est le moyen le plus courant d’obtenir ou d’envoyer des informations à un site Web ou à un client, selon la manière dont ces informations sont envoyées.

Post est un moyen de le faire en toute sécurité ; get est essentiellement un moyen non sécurisé d’obtenir des informations ; c’est le plus couramment utilisé. Lorsque nous exécutons notre application et que nous la parcourons ensuite, nous pouvons voir qu’elle est connectée là où nous avons la page d’accueil ; si nous allons sur la console où une instruction apparaît et dit get.

Qu’est-ce que ça veut dire? Essentiellement, chaque fois que nous tapons quelque chose ici, ce n’est pas sécurisé, ce qui signifie que vous savez que tout le monde peut le voir.

Ce ne sont pas des informations sécurisées qui seront envoyées au serveur et qui nous renverront la page Web réelle en utilisant une méthode get.

from flask import Flask

app = Flask(__name__)


@app.route("/")
def index():
    return "Hi there, this is testing"


if __name__ == "__main__":
    app.run(debug=True)

Production:

obtenir la méthode

Si nous utilisons la requête post, nous pouvons envoyer des informations sécurisées qui sont cryptées, et nous ne les verrons d’aucun point de terminaison. Il n’est pas stocké sur le serveur Web réel, c’est donc la différence entre get et post.

Nous ne l’avons probablement pas expliqué de la meilleure façon, mais à travers cet article, nous comprendrons les principales différences entre eux et la façon de base de penser à la méthode get qui est utilisée pour envoyer des requêtes non sécurisées et les requêtes post sont sécurisées pour envoyer des données, il est généralement utilisé pour envoyer des données de formulaire.

Passons en revue un exemple de base : nous voulons configurer quelques pages différentes dans cette application. Nous allons écrire un script avec une boîte de dialogue dans laquelle quelqu’un pourra le taper et l’envoyer à l’aide d’un bouton, et nous le ferons en utilisant la requête post.

Nous allons mettre en place une page en utilisant une méthode appelée LOGIN(), lui donner un décorateur en haut, et mettre "/login". Il faut ajouter un autre aspect que nous n’avons pas encore vu : le methods.

Nous pouvons l’utiliser sur cette page de connexion, donc par défaut, chaque fois que vous vous connectez ou que vous accédez à l’une des deux pages, vous lancez une requête get, ce qui signifie que nous devons obtenir ces informations, mais cela ne va pas pour être sûr c’est pourquoi nous avons une méthode différente qui est la méthode post.

Dans le décorateur, nous devons utiliser un argument appelé methods, qui prend une liste, puis nous mettons un post et get à l’intérieur de la liste.

@app.route("/login", methods=["POST", "GET"])

Le problème est de savoir comment déterminer dans cette fonction login si on a appelé la requête get ou si on appelle la requête post ? Nous devons commencer à importer la request et l’utiliser avec une instruction if pour vérifier si nous atteignons cette page avec une requête get ou une requête post.

Si nous avons un post, nous redirigeons l’utilisateur et envoyons les données à la page de l’utilisateur, où nous pouvons afficher les données. Nous utilisons également les Data comme clé du dictionnaire de formulaires et y accédons à partir de notre fichier login.html, où nous avons un attribut appelé name.

Si nous avons la requête get, nous rendons la page de connexion en utilisant la méthode render_template().

def LOGIN():
    if request.method == "POST":
        UER_DATA = request.form["DATA"]
        return redirect(url_for("USER", usr=UER_DATA))
    else:
        return render_template("login.html")

Maintenant, nous devons créer une page de plus, et le nom de la fonction serait USER(), qui prendra une variable qui est usr. Au lieu de renvoyer le modèle, nous allons renvoyer le HTML de base.

@app.route("/<usr>")
def USER(usr):
    return f"<h1>{usr}</h1>"

Nous devons maintenant créer cette page de connexion qui serait un simple formulaire HTML, donc, dans le dossier des modèles, nous créons un fichier login.html ; dans ce fichier, nous utiliserons le modèle de démarrage Bootstrap. À l’intérieur de la balise body, nous commençons à créer le formulaire.

Nous avons utilisé l’attribut method, et dans ce cas, notre méthode va être post parce que nous allons publier des informations, pas obtenir d’informations, et généralement, si vous mettez get ici, cela signifie que vous vont remplir ce formulaire avec les informations que vous obtenez du serveur.

 <h1>Hello, this is login page!</h1>
    <form action="#" method="post">
        <p>Name:</p>
        <p><input type="text" name="DATA" /></p>
        <p><input type="submit" value="submit"/></p>
    </form>

Voici le code source complet du fichier app.py que nous avons expliqué ci-dessus.

from flask import Flask, render_template, redirect, url_for, request

app = Flask(__name__)


@app.route("/")
def INDEX():
    return render_template("index.html")


@app.route("/login", methods=["POST", "GET"])
def LOGIN():
    if request.method == "POST":
        UER_DATA = request.form["DATA"]
        return redirect(url_for("USER", usr=UER_DATA))
    else:
        return render_template("login.html")


@app.route("/<usr>")
def USER(usr):
    return f"<h1>{usr}</h1>"


if __name__ == "__main__":
    app.run(debug=True)

Production:

Demande de poste Flask

Sortie console :

Requête de publication Flask – Sortie de la console

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn