2.5 KiB
status: hidden title: Python — Flask slug: Aecheth6 robots: noindex
flask
Cours à distance sur flask.
C'est le 2ème cours sur flask, si vous avez raté le premier en gros on
a utilisé 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, 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 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.
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
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:
[
{"text": "Hello"},
{"text": "world"}
]