status: hidden title: Python — Flask slug: Aecheth6 robots: noindex # flask Cours à distance sur [flask](https://palletsprojects.com/p/flask/). C'est le 2ème cours sur flask, si vous avez raté le premier en gros on a utilisé [PyCharm](https://www.jetbrains.com/pycharm/) pour se créer un projet, ce qui à automatiquement crée un venv dans lequel on a fait un `pip install flask`. Pour ceux qui n'ont pas encore PyCharm, prenez la version pro, elle est gratuite avec votre adresse Sup'Internet. ## Voix Comme la dernière fois on va utiliser [Mumble](https://fr.wikipedia.org/wiki/Mumble), un logiciel libre de voix sur IP, prenez le temps de configurer le « push to talk » avant de rejoindre le salon. Documentation pour se connecter : https://docs.framasoft.org/fr/jitsimeet/mumble.html - Salon : Sup - Mot de passe : pomme@412 ## Chat Comme la dernière fois on va utiliser IRC sur Libera.Chat sur le salon `#supinternet`. Utilisez https://web.libera.chat/#supinternet si vous n'avez pas de client IRC (ne cliquez *pas* sur "j'ai un mot de passe", si vous n'avez pas de compte Libera.Chat). ## Étape 0 — Hello world Suivez simplement le tutoriel officiel de flask jusqu'a avoir un hello world fonctionnel en localhost. Utilisez [ngrok](https://ngrok.com/) et envoyez moi l'URL sur IRC pour que je valide cette étape.https://ngrok.com/. Rendus: - Maxime : http://00b15430.ngrok.io/ - Léo (Olyno) : http://afcb7f61.ngrok.io/ - Raphael : http://f34f00ff.ngrok.io/ - Ilan : http://279e0d80.ngrok.io/ ## Étape 1 — Templating Créez deux templates `index.html` et `about.html`. Flask utilise [Jinja2](https://jinja.palletsprojects.com/en/2.11.x/templates/). Utilisez `extends` pour avoir `base.html` avec vos tags html / head / title / ... et utilisez `extends` dans vos `index.html` et `about.html` pour simplement surcharger un block `body`. ## Étape 2 — SQLite Utilisez une base de donnée [SQLite](https://flask.palletsprojects.com/en/1.1.x/patterns/sqlite3/#sqlite3) dans laquelle vous crerez une seule table: `message`, avec une colonne `text`. Implémentez deux routes: `POST /messages/` et `GET /messages/`. Un `POST /messages/` permet d'ajouter un message (le message doit etre dans le corps de la requête) et un `GET /messages/` permettra d'obtenir tous les messages. Le `POST` ne doit rien renvoyer. Le `GET` doit tout renvoyer sous forme d'une liste JSON contenant des objets JSON, de la forme: ```json [ {"text": "Hello"}, {"text": "world"} ] ```