===================================== TP n°3 : Première application Flask ===================================== Mise en place ============= * Créez un `environnement virtuel <../annexes/a1_venv>`:doc:. * Installez-y ``flask`` avec la commande : .. code-block:: bash pip install flask * Récupérez le fichier `fichiers.zip <../_static/fichiers.zip>`_ et décompressez le. Votre travail ============= Créez un fichier ``tp3.py`` en suivant l'`exemple du cours `:ref:, ainsi qu'un fichiers ``serveur.py`` pour `tester votre application `:ref:. * Créez une vue pour la route ``/td1/``, qui renvoie le contenu des fichiers contenus dans le répertoire ``td1`` (issus de l'archive ``fichiers.zip``). Vérifiez que le rendu des différentes pages est identique à `celui du TD1 <../_static/td1/page1.html>`_. * Faites en sorte que l'URL `/td1/ `_ de votre application affiche le contenu du fichier ``td1/index.html``. * Que se passe-t-il lorsque vous remplissez et validez le formulaire à l'URL `/td1/form.html `_ ? Faites en sorte d'afficher le message "Vos données ont bien été prises en compte" (même si ça n'est pas tout à fait vrai pour l'instant). Pour cela, notez que Le décorateur ``app.route`` accepte un paramètre nommé ``methods``. Sa valeur est une liste de chaînes, indiquant la ou les méthode(s) HTTP acceptée(s) par la vue :: @app.route("/foo/bar", methods=['PUT']) def foo_bar(): # ... * Faites maintenant en sorte que, lorsqu'on soumet des données via `/td1/form.html `_, le serveur réponde avec un tableau à deux colonne affichant le prénom, le nom et le genre qui ont été saisis. Pour cela, notez que les valeurs des paramètres passés dans l'URL sont accessibles dans le dictionnaire ``request.form`` (``request`` est un objet importé depuis le package ``flask``). * En plus d'afficher les données soumise par le formulaire, on vous demande maintenant de les stocker dans la base de données ``db.sqlite3`` (fournie dans ``fichiers.zip``), plus précisément dans la table ``FormData`` qui contient les 3 colonnes ``prénom``, ``nom`` et ``genre``. Pour plus d'information sur la connection à une base de données `sqlite3`, consultez l'annexe `../annexes/a4_dbapi`:doc:. * Créez une nouvelle vue pour la route ``/inscrits``, qui affiche la liste des personnes stockées dans la base de données ``db.sqlite3``. * Ajoutez + un lien dans la vue ``/formproc`` pointant vers la liste des inscrits; + un lien dans la vue ``/inscrit`` pointant vers le formulaire pour ajouter une personne.