Programmation web avec Flask
Sylvain Fankhauser
Powerhouse
Bonjour !
C’est quoi un framework ?
- Met à disposition un ensemble de librairies
- Donne des bases pour structurer et organiser son code
- Est destiné aux développeurs‧ses
- Est orienté vers une utilisation spécifique (p.ex. «framework web» pour faire des sites web)
Un framework…

Flask est un micro-framework
ll ne fournit que le strict nécessaire
- Système de routage
- Abstraction des requêtes/réponses HTTP
- Moteur de templates
Principaux composants de Flask
- Django (Python)
- FastAPI (Python)
- Ruby on Rails (Ruby)
- Symfony (PHP)
Quelques autres frameworks web
- Système de routage
- Abstraction des requêtes/réponses HTTP
- Moteur de templates
- Interaction avec des bases de données
- Interface d’administration
- Gestion de formulaires
- Authentification
- Internationalisation / localisation
- Envoi de mails
- Gestion de données géographiques
- …
Comparaison rapide avec Django
- Plus léger, donc plus facile d’apprendre les bases
- Plus rapide
- Plus extensible
Pourquoi Flask alors ?
Et les CMS ?
WordPress est-il un framework ?
CMS
- Public cible : rédacteurs‧ices de contenu
- Centré autour de la gestion de contenu
Framework
- Public cible : développeurs‧euses
- Centré autour de la gestion de code pour augmenter la productivité


Le cycle requête - réponse
def home(request):
return HttpResponse(
"<html><body><h1>Hello world!</h1></body></html>"
)
from flask import Flask, request
app = Flask(__name__)
def home():
return "<html><body><h1>Hello world!</h1></body></html>"
Flask est un peu différent
Interlude
Installation de Flask
Un paquet Python est un dossier avec des fichiers Python dedans
Exemple avec Flask:
Les paquets Python s’installent avec l’outil pip
Par exemple:
python -m pip install flask
Problème : on ne peut avoir qu’une version de chaque paquet installée
Solution : les virtual environments (venv)
Création d’un environnement virtuel :
python -m venv mon_dossier
Chaque environnement virtuel est isolé
env1
Python 3.10
Flask 2.2.2
env2
Python 3.9
Flask 1.1.4
env3
Python 3.11
Django 3.2.11
Chaque environnement virtuel a son exécutable Python
Pour utiliser l’environnement virtuel :
./mon_env/bin/python -m flask run
Sur Windows:
mon_env\Scripts\python -m flask run
Pour raccourcir les commandes, on peut activer un environnement virtuel
Pour activer l’environnement virtuel :
source /mon_env/bin/activate
Puis on peut utiliser python normalement :
python -m flask run
Pour désactiver l’environnement :
deactivate
from flask import Flask, request
app = Flask(__name__)
def home():
return "<html><body><h1>Hello world!</h1></body></html>"
Notre première page Flask
Lancez le serveur :
flask run
Puis naviguez vers http://localhost:5000/
Il manque quelque chose pour que ça fonctionne !

Il faut brancher les fonctions !
from flask import Flask, request
app = Flask(__name__)
@app.route("/")
def home():
return "<html><body><h1>Hello world!</h1></body></html>"
Le branchement se fait avec @app.route
app.py
Lancez le serveur :
flask run
Puis naviguez vers http://localhost:5000/
Exercice
Créez une deuxième page et mettez un lien sur chaque page pour passer de l’une à l’autre
from flask import Flask, request
app = Flask(__name__)
@app.route("/")
def home():
return "<html><body><h1>Hello world!</h1></body></html>"
app.py
😕
Les templates
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def home():
return render_template("home.html")
app.py
😌
<html>
<body>
<h1>Hello world!</h1>
</body>
</html>
templates/home.html
✨
✨
✨
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def home():
return render_template("home.html", name="Sylvain")
app.py
<html>
<body>
<h1>Salut {{ name }}!</h1>
</body>
</html>
templates/home.html
Les variables de templates
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def home():
return render_template("home.html", people=["Julie", "Cyril", "Caipi"])
app.py
<html>
<body>
<h1>Les gens chics</h1>
<ul>
{% for person in people %}
<li>{{ person }}</li>
{% endfor %}
</ul>
</body>
</html>
templates/home.html
Les template tags
Bravo !
🤔 Place aux questions 🧐
Intro à Flask
By Sylvain Roflmao
Intro à Flask
- 269