mdk.fr/content/pages/supinternet_flask1.md
2021-06-18 08:58:07 +02:00

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:

É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"}
]