Ce guide explore les concepts initiaux de Flask, un micro-framework web léger et pouplaire pour Python. Nous aborderons l'installation, la création d'une application simple et l'explication des éléments clés qui la composent.
- Installation des dépendances Python
L'installation des modules Python s'effectue généralement via l'outil pip. Un environnement virtuel créé avec pyvenv ou venv inclut automatiquement pip, le rendant prêt à l'emploi.
Pour installer Flask (ou tout autre package Python), exécutez la commande suivante dans votre terminal :
pip install flask
- Création d'une application Flask simple
Voici un exemple basique d'application Flask qui illustre les concepts de routage, les décorateurs, les fonctions de vue, ainsi que la gestion des requêtes et des réponses.
from flask import Flask, abort, redirect
# Initialisation de l'application Flask
# __name__ est passé pour que Flask sache où chercher les ressources statiques et les templates.
application = Flask(__name__)
# Définition de la route principale pour l'URL racine '/'
@application.route('/')
def page_principale():
"""
Fonction de vue pour la page d'accueil.
Elle renvoie un simple message HTML.
"""
return '<h1>Bienvenue sur mon application Flask !</h1>'
# Définition d'une route dynamique avec un paramètre 'nom'
@application.route('/utilisateur/<nom>')
def afficher_utilisateur(nom):
"""
Fonction de vue pour afficher un message personnalisé à un utilisateur.
Gère les redirections et les erreurs pour des noms spécifiques.
"""
if nom == 'recherche':
# Redirige vers Google si le nom est 'recherche'
return redirect('https://www.google.com')
elif nom == 'erreur':
# Déclenche une erreur 404 si le nom est 'erreur'
return abort(404)
# Affiche un message de bienvenue personnalisé
return f'<h1>Bonjour, {nom.capitalize()} !</h1>' # Utilisation de .capitalize() pour la variation
# Point d'entrée pour l'exécution du script
if __name__ == '__main__':
# Démarre le serveur de développement Flask.
# debug=True active le mode débogage, utile pour le développement.
# port=5001 est un exemple d'un port alternatif.
application.run(debug=True, port=5001)
Analyse des composants clés
from flask import Flask, abort, redirect
Ces lignes importent les classes et fonctions nécessaires depuis la bibliothèque Flask :
Flask: La classe principale pour créer une instance d'application web.abort: Une fonction qui génère une réponse d'erreur HTTP (par exemple, 404 pour "Non trouvé").redirect: Une fonction qui génère une réponse de redirection HTTP.
application = Flask(__name__)
Cette instruction crée une instance de l'application Flask. Le paramètre __name__ est une variable spéciale de Python qui représente le nom du module courant. Flask l'utilise pour localiser correctement les ressources au sein de l'application (comme les ficihers de configuration, les modèles HTML, etc.).
@application.route('/chemin') : Le Routage et les Décorateurs
Les navigateurs web et autres clients envoient des requêtes HTTP à un serveur. Le serveur transmet ces requêtes à l'application Flask. L'application doit savoir quelle fonction Python exécuter pour une URL donnée. C'est le rôle du routage.
Dans Flask, les routes sont définies à l'aide de décorateurs. Le décorateur @application.route('/') associe l'URL racine (/) à la fonction de vue qui le suit directement. Lorsqu'une requête arrive pour cette URL, Flask exécute la fonction associée.
Les décorateurs sont une fonctionnalité avancée de Python qui permettent de modifier ou d'augmenter le comportement d'une fonction sans en altérer le code source directement. Ici, ils servant à enregistrer la fonction en tant que gestionnaire de route.
Les Fonctions de Vue (Ex: page_principale() et afficher_utilisateur(nom))
Les fonctions qui suivent un décorateur de route sont appelées des fonctions de vue. Elles contiennent la logique métier qui génère la réponse HTTP pour une URL spécifique. Le résultat retourné par ces fonctions est la réponse envoyée au client.
page_principale(): Gère la requête pour l'URL/et retourne un simple message de bienvenue.afficher_utilisateur(nom): Gère les requêtes pour des URLs comme/utilisateur/Alice. Le<nom>dans la route indique un paramètre dynamique qui est capturé et passé comme argument à la fonction.
Gestion des Réponses avec redirect() et abort()
Dans la fonction afficher_utilisateur, nous avons des exemples de gestion de réponses spécifiques :
return redirect('https://www.google.com'): Si l'utilisateur accède à/utilisateur/recherche, la fonction renvoie une réponse HTTP 302 (Redirection) qui indique au navigateur de charger l'URL de Google.return abort(404): Si l'utilisateur demande/utilisateur/erreur, la fonction génère une erreur HTTP 404 (Non trouvé). La fonctionabort()ne retourne pas de contrôle à l'appelant, mais lève une exception que Flask (et le serveur web) intercepte pour générer la page d'erreur appropriée.
if __name__ == '__main__':
Cette construction est une pratique courante en Python. Elle garantit que le code à l'intérieur de ce bloc ne sera exécuté que lorsque le script est lancé directement (par exemple, python mon_app.py), et non lorsqu'il est importé comme un module dans un autre script Python.
Dans ce contexte, cela signifie que le serveur de développement Flask sera démarré uniquement si notre fichier est le programme principal en cours d'exécution.
application.run(debug=True, port=5001)
Cette ligne lance le serveur de développement intégré de Flask. Une fois exécuté, le serveur se met en attente de requêtes. Il continuera à fonctionner jusqu'à ce qu'il soit explicitement arrêté (par exemple, avec Ctrl-C).
debug=True: Active le mode de débogage. Cela fournit des informations de débogage détaillées en cas d'erreur et active le rechargement automatique du code lorsque des modifications sont détectées, ce qui est très pratique pendant le développement.port=5001: Spécifie le port sur lequel l'application écoutera les requêtes. Par défaut, Flask utilise le port 5000.