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:
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:
Sortie console :
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