Formulaire de demande Flask

Salman Mehmood 18 aout 2022
Formulaire de demande Flask

Nous apprendrons, avec cette explication, deux choses qui se produisent lorsque nous soumettons un formulaire et comment nous pouvons recevoir et obtenir les données du formulaire à l’aide de Flask et Python.

Recevoir et obtenir les données du formulaire à l’aide de Flask et Python

Les navigateurs font des requêtes aux serveurs ; c’est ainsi qu’ils communiquent. Les requêtes Get sont normalement utilisées pour récupérer des données d’un serveur ou demander au serveur certaines données ; cependant, une demande n’est que quelques éléments de données qu’un navigateur envoie à un serveur.

Le serveur voit alors ces pièces et, espérons-le, comprend ce qu’elles signifient. Par exemple, la partie get d’une requête est juste une chaîne incluse dans la requête.

Exemple de formulaire de demande Flask 1

Lorsque le serveur voit cela, et s’il est programmé pour répondre aux requêtes get, il peut répondre. Mais au lieu de faire une requête get, vous pourriez faire une requête sandwich.

Le serveur n’aurait aucune idée de ce dont vous parlez à moins que vous n’ayez codé le serveur pour le comprendre spécifiquement.

Exemple de formulaire de demande Flask 2

Si vous utilisiez une requête sandwich, vous ne feriez plus de requête HTTP. HTTP est un protocole qui signifie un ensemble de règles, et si vous suivez les règles comme l’utilisation de méthodes HTTP qui existent réellement, alors vous utilisez HTTP, et si vous ne le faites pas, alors vous ne l’êtes pas.

Ceci est important car si nous voulons utiliser HTTP, il y a des règles que nous devons connaître. Par exemple, les requêtes post sont un autre type de requête qui peut avoir une charge utile appelée corps.

Ce sont des données plus longues, et elles sont incluses dans la requête ; cela pourrait être une chaîne de données ou quelque chose de plus formalisé comme JSON. Il peut également s’agir d’un fichier ou de données de formulaire.

Certaines requêtes HTTP peuvent avoir une charge utile, et d’autres non. Les requêtes Get, par exemple, ne peuvent pas avoir de charge utile, mais post et put peuvent en avoir.

Nous pouvons indiquer à notre formulaire d’utiliser différents types de requêtes en fonction de la manière dont nous souhaitons qu’il envoie des données. Si nous disons à notre formulaire d’utiliser get, il ne peut pas mettre les données dans la charge utile ; il le met dans l’URL.

Exemple de formulaire de demande Flask 3

Si nous lui disons d’utiliser post, il mettra les données dans la charge utile.

Exemple de formulaire de demande Flask 4

Créons une application Flask pour recevoir ces données de formulaire comme le post. Nous allons créer un fichier appelé app.py qui contiendra notre code Flask, et nous allons également créer un environnement virtuel et y installer un Flask.

Nous savons que Flask utilise des fonctions pour répondre aux demandes du navigateur, et maintenant nous voulons répondre à la demande du navigateur avec notre page HTML afin que le navigateur puisse réellement l’afficher lorsque nous accédons pour la première fois à l’application Flask.

Pour ce faire avec Flask, nous devons effectuer une configuration initiale. Nous devrons créer un dossier templates, qui doit être au même endroit que app.py.

A l’intérieur de templates, nous allons mettre notre fichier index.html ; puis, dans ce fichier, nous utiliserons le modèle de démarrage bootstrap qui est open source pour tout le monde.

Ensuite, nous trouvons la balise body et écrivons un formulaire HTML de base avec deux champs.

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

    <title>Hello, world!</title>
  </head>
  <body>
   <h1>Hello, this is about flask!</h1>
    <form action="#">
        <p>Name:</p>
        <p><input type="text" name="candidate-name" /></p>
        <p>City:</p>
        <p><input type="text" name="candidate-city" /></p>
        <p><input type="submit" value="submit"/></p>
    </form>

    <!-- Optional JavaScript; choose one of the two! -->

    <!-- Option 1: Bootstrap Bundle with Popper -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>

    <!-- Option 2: Separate Popper and Bootstrap JS -->
    <!--
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js" integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF" crossorigin="anonymous"></script>
    -->
  </body>
</html>

Ensuite, nous devons utiliser le Flask pour renvoyer le code HTML à l’utilisateur. Pour ce faire, nous devons importer un Flask et render_template dans app.py.

Maintenant, nous allons devoir ajouter un endpoint à l’aide d’un décorateur, puis retourner render_template() de index.html.

Importons une request depuis le Flask, et à l’intérieur de notre point de terminaison, ajoutons une instruction print pour afficher le contenu de request.args où le Flask mettra les chaînes de requête, et il recevra toute demande.

from flask import Flask, render_template, request

app = Flask(__name__)


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


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

Notez que nous ne pouvons accéder à request.args qu’à l’intérieur d’une fonction qui répond à une requête.

Maintenant, nous pouvons démarrer l’application Flask. Assurez-vous d’abord d’avoir activé un environnement virtuel, et lorsque nous arriverons au point de terminaison, nous verrons que le formulaire s’affiche, puis remplissez et soumettez le formulaire.

Formulaire de demande Flask Sortie 1

Maintenant, nous pouvons voir que quelque chose a été imprimé.

Si nous changeons la méthode du formulaire en post dans le code HTML, nous ne recevrons plus de chaînes de requête. Au lieu de cela, nous devrons changer le code Flask pour accéder au request.form où le Flask place toutes les données de formulaire reçues dans une requête.

<form action="#" method="post" >

Nous devons également indiquer que le point de terminaison peut recevoir des requêtes get et post. Si nous voulons accéder à des champs de données de formulaire particuliers, nous pouvons utiliser request.form.get().

Il s’agit d’une méthode qui prend le nom du champ auquel nous voulons accéder et renvoie sa valeur, par exemple, request.form.get("candidate-name") et request.form.get("candidate-city") nous donneront leurs valeurs.

from flask import Flask, request, render_template

app = Flask(__name__)


@app.route("/", methods=["GET", "POST"])
def INDEX():
    print(request.form)
    print(request.form.get("candidate-name"))
    print(request.form.get("candidate-city"))
    return render_template("index.html")


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

Production:

Formulaire de demande Flask Sortie 2

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