Python Flask expliqué en 5 minutes ou moins
Flask, conçu en Python, se présente comme un microframework idéal pour développer des applications web. Sa nature souple et hautement personnalisable le rend particulièrement accessible pour les débutants, ce qui explique sa popularité dans la création de serveurs web. Cet article explore Flask en détail : sa définition, sa comparaison avec d'autres frameworks, et les étapes pour élaborer une application Python de base.
Qu'est-ce que Flask ?
Flask, disponible sur flask.palletsprojects.com, est un framework Python dédié à la création de serveurs web. Contrairement à d'autres solutions, il ne contraint pas les développeurs à une structure de fichiers prédéfinie. De plus, son approche non directive permet d'utiliser les outils de votre choix pour des tâches telles que la connexion à une base de données ou la validation de formulaires.
Comme mentionné, Flask est spécialement conçu pour les serveurs web, des logiciels qui traitent les requêtes HTTP pour fournir des données et des fichiers pertinents.
Flask et les autres frameworks : une comparaison
Dans cette section, nous comparerons brièvement Flask avec deux autres frameworks populaires : Django et FastAPI, en mettant en lumière leurs atouts et inconvénients respectifs.
Flask contre Django
Flask se distingue par sa légèreté, offrant simplicité et flexibilité aux développeurs. Toutefois, cette approche implique une gestion plus active de nombreux aspects du développement. Django, en revanche, propose une approche "batteries incluses" avec de nombreux outils prêts à l'emploi, facilitant un développement et un déploiement plus rapides. Cependant, Django peut sembler moins flexible, et son apprentissage est considéré comme plus difficile.
En résumé, Flask est généralement préféré pour les projets de petite et moyenne envergure, tandis que Django est plus adapté aux projets plus vastes et complexes.
À lire également: Les différences entre Flask et Django
Flask contre FastAPI
FastAPI se présente comme un framework récent dédié à la création d'APIs en Python. Il offre rapidité et facilité d'utilisation, ainsi que des outils de surveillance intégrés. Néanmoins, il bénéficie d'un écosystème et d'une communauté encore jeunes, et son utilisation se concentre principalement sur la création d'API. Flask, plus polyvalent, peut être employé pour des API, mais aussi pour la gestion de fichiers statiques. Il est léger et relativement simple à prendre en main, même s'il est moins rapide que FastAPI.
Flask est donc recommandé pour les applications web avec rendu HTML, tandis que FastAPI est plutôt destiné à la création d'APIs.
À lire également: FastAPI vs Flask: lequel choisir?
Comment développer une application avec Flask
Nous allons illustrer la création d'une application Flask pour afficher du HTML et fournir des données via une API. L'objectif est de vous donner un aperçu du processus et non de fournir un tutoriel exhaustif.
Prérequis
Pour suivre ce guide, une compréhension de base de Python 3 est requise. La connaissance du protocole HTTP serait un plus, mais n'est pas indispensable.
Avant de débuter, assurez-vous d'avoir installé Python. Si vous avez besoin d'assistance, ce tutoriel vidéo pourra vous aider :

Créer un environnement virtuel
Créez un dossier dédié à votre projet. Pour cela, utilisez la commande suivante dans votre terminal (Bash) :
mkdir flask-tut
Naviguez dans ce dossier en utilisant :
cd flask-tut
Une fois dans le dossier, créez un environnement virtuel, pour éviter des conflits de dépendances :
python3 -m venv venv
Un dossier 'venv' sera créé. Vous pouvez le visualiser avec la commande :
ls

Activer l'environnement virtuel
Pour activer l'environnement virtuel, saisissez la commande :
source venv/bin/activate
L'invite de commande changera de $ à (venv) $.

Pour plus d'informations, consultez cet article sur les environnements virtuels en Python.
Installer Flask
Avec l'environnement virtuel activé, nous pouvons installer Flask en utilisant pip :
pip install Flask
Cela téléchargera et installera les dépendances nécessaires.

Afficher du HTML
Créez un fichier 'main.py', qui sera le point d'entrée de l'application :
touch main.py
Ouvrez 'main.py' dans votre éditeur et ajoutez :
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return '<h1>Bonjour depuis Flask!</h1>'
Ce code commence par importer la classe Flask. Une instance de cette classe est ensuite créée, en utilisant la variable '__name__'. Cette variable, qui représente le nom du module actuel, est indispensable pour que Flask localise les fichiers de l'application. Cette instance est stockée dans la variable 'app'.
Une fonction nommée 'index' est ensuite définie. Cette fonction renvoie le HTML à afficher. Le décorateur '@app.route' permet de transformer une fonction standard en fonction de vue Flask. La valeur de retour de cette fonction sera ainsi traitée comme une réponse HTML.
Pour démarrer l'application, utilisez :
flask --app main run
L'option '--app' indique le fichier contenant l'application, ici 'main.py'. Le serveur devrait alors se lancer.

En ouvrant votre navigateur à l'adresse http://localhost:5000 ou http://127.0.0.1:5000, vous devriez voir un titre h1.

Écrire tout le HTML dans le code Python est une pratique à éviter. Il est préférable de séparer Python du HTML. La section suivante explique comment afficher des fichiers HTML distincts.
Afficher un fichier HTML
Dans cette partie, nous allons configurer Flask pour afficher un fichier 'index.html'. Créez le fichier 'index.html' dans le dossier 'template', où Flask recherche les modèles HTML :
touch template/index.html
Ouvrez 'index.html' et ajoutez le code suivant :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Site Web Flask</title>
</head>
<body>
<h1>Bonjour depuis Flask!</h1>
</body>
</html>
Modifiez maintenant le fichier 'main.py' pour inclure l'importation suivante, après l'importation de Flask :
from flask import render_template
La fonction 'render_template' nous permet de servir des modèles HTML. Pour afficher un fichier HTML, modifiez la fonction 'index' :
@app.route("/")
def index():
return render_template('index.html')
Arrêtez le serveur (Ctrl+C) et redémarrez-le :
flask --app main run
Actualisez la page du navigateur, et vous devriez voir :

Dans cet exemple, nous affichons une page HTML statique. Flask permet également d'afficher des modèles dynamiques en créant des fichiers HTML et en leur transmettant des données. Ces modèles utilisent la syntaxe Jinja. Par souci de concision, nous n'aborderons pas cet aspect ici, mais nous inclurons des liens vers des ressources utiles pour apprendre Flask.
Création d'une route API
En plus de l'affichage de contenu HTML, les applications web doivent souvent transmettre des données via une route API. Configurer une route API avec Flask est simple. Ajoutez ce code à 'main.py' pour créer une route API sur '/data' :
@app.route('/data')
def data():
return { "status": "OK", "msg": "Bonjour depuis l'API Flask" }
Si une fonction renvoie un dictionnaire ou une liste, la valeur est convertie en JSON. En redémarrant le serveur et en allant sur http://localhost:5000/data, vous devriez voir :

Ressources pour approfondir vos connaissances sur Flask
❇️ La documentation officielle de Flask est un excellent point de départ. Bien structurée et claire, elle constitue probablement la ressource la plus fiable.
❇️ freeCodeCamp propose également une excellente vidéo YouTube sur Flask. freeCodeCamp est réputé pour la qualité de ses ressources d'apprentissage gratuites.
❇️ Ce cours Udemy est une bonne option pour apprendre à créer des API d'entreprise avec Flask, abordant des outils comme Flask-SQLALchemy et Flask-Smorest.
Conclusion
Cet article a introduit le framework Python Flask. Nous avons exploré sa définition, l'avons comparé à d'autres frameworks et avons construit une application simple. Enfin, nous avons listé des ressources pour approfondir votre apprentissage.
N'hésitez pas à consulter notre prochain article sur la sécurisation des API REST Flask avec un jeton Web JSON.