🔝 Retour au Sommaire
Un framework web est un ensemble d'outils et de bibliothèques qui facilite la création d'applications web. Plutôt que de tout coder à partir de zéro, un framework vous fournit une structure et des fonctionnalités prêtes à l'emploi pour gérer les aspects courants du développement web.
Imaginez que vous voulez construire une maison : vous pourriez fabriquer chaque brique et chaque outil vous-même, ou bien utiliser des matériaux et des outils déjà prêts. Le framework web, c'est comme avoir une boîte à outils complète avec des fondations solides pour construire votre application.
Avant de plonger dans les frameworks, il est important de comprendre quelques concepts de base :
Le web fonctionne selon un modèle client-serveur :
- Le client : C'est votre navigateur web (Chrome, Firefox, Safari, etc.). Il envoie des requêtes pour demander des pages ou des données.
- Le serveur : C'est un ordinateur qui héberge votre application web. Il reçoit les requêtes et renvoie des réponses (pages HTML, données JSON, etc.).
┌─────────────┐ ┌─────────────┐
│ Client │ ──── Requête ──→ │ Serveur │
│ (Navigateur)│ │ (Python) │
│ │ ←── Réponse ──── │ │
└─────────────┘ └─────────────┘
Les communications entre le client et le serveur utilisent le protocole HTTP (HyperText Transfer Protocol). Ce protocole définit différents types de requêtes :
- GET : Récupérer des données (afficher une page)
- POST : Envoyer des données (soumettre un formulaire)
- PUT : Mettre à jour des données
- DELETE : Supprimer des données
Une URL (Uniform Resource Locator) est l'adresse d'une ressource sur le web :
https://monsite.com/articles/123
│ │ │ │
│ │ │ └─ Paramètre (ID de l'article)
│ │ └────────── Route/Chemin
│ └───────────────────── Nom de domaine
└──────────────────────────── Protocole
Les frameworks web utilisent un système de routes pour associer des URLs à des fonctions Python spécifiques.
Les frameworks web Python vous évitent de réinventer la roue en fournissant :
Au lieu d'écrire du code complexe pour analyser les requêtes HTTP, le framework le fait pour vous :
# Sans framework : code complexe et fastidieux
# Avec framework : simple et lisible
@app.route('/hello')
def hello():
return "Bonjour le monde !"Les frameworks permettent de créer des pages HTML dynamiques en mélangeant du HTML avec des variables Python.
Protection contre les attaques courantes (injection SQL, XSS, CSRF, etc.) sans avoir à tout implémenter manuellement.
Systèmes prêts à l'emploi pour gérer les connexions utilisateurs, les cookies, les sessions, etc.
Outils pour se connecter facilement à des bases de données et manipuler les données.
Vérification automatique que les données envoyées par l'utilisateur sont valides et sécurisées.
Python dispose de plusieurs frameworks web excellents, chacun avec ses propres caractéristiques :
Django est le framework web Python le plus populaire et le plus complet.
Caractéristiques :
- Framework full-stack : tout est inclus (ORM, admin, authentification, etc.)
- Idéal pour les projets complexes et de grande envergure
- Architecture MTV (Model-Template-View), similaire au pattern MVC
- Panel d'administration automatique
- ORM puissant pour gérer les bases de données
- Grande communauté et documentation exhaustive
Quand l'utiliser :
- Applications web complètes (sites e-commerce, réseaux sociaux, etc.)
- Projets nécessitant une base solide et évolutive
- Équipes cherchant des conventions établies
Exemple simple :
# views.py
from django.http import HttpResponse
def accueil(request):
return HttpResponse("Bienvenue sur mon site Django !")Flask est un framework minimaliste et flexible.
Caractéristiques :
- Framework minimaliste : fournit l'essentiel, vous ajoutez ce dont vous avez besoin
- Très flexible et modulaire
- Courbe d'apprentissage douce
- Idéal pour les petits projets et les APIs
- Grande liberté dans l'organisation du code
Quand l'utiliser :
- Petites applications web
- APIs REST
- Prototypes rapides
- Projets nécessitant une grande flexibilité
Exemple simple :
from flask import Flask
app = Flask(__name__)
@app.route('/')
def accueil():
return "Bienvenue sur mon site Flask !"
if __name__ == '__main__':
app.run()FastAPI est un framework moderne et performant, spécialisé dans la création d'APIs.
Caractéristiques :
- Framework moderne utilisant les dernières fonctionnalités Python (async/await, type hints)
- Extrêmement rapide (performances comparables à Node.js)
- Validation automatique des données avec Pydantic
- Documentation API automatique (Swagger/OpenAPI)
- Conçu pour la programmation asynchrone
- Excellent pour les APIs REST et les microservices
Quand l'utiliser :
- APIs REST modernes
- Applications nécessitant de hautes performances
- Projets utilisant la programmation asynchrone
- Microservices
Exemple simple :
from fastapi import FastAPI
app = FastAPI()
@app.get('/')
def accueil():
return {"message": "Bienvenue sur mon API FastAPI !"}| Critère | Django | Flask | FastAPI |
|---|---|---|---|
| Type | Full-stack | Micro-framework | Framework API |
| Courbe d'apprentissage | Moyenne | Facile | Moyenne |
| Flexibilité | Moyenne | Très élevée | Élevée |
| Performance | Bonne | Bonne | Excellente |
| Async natif | Partiellement | Non | Oui |
| Cas d'usage typique | Sites web complets | Petites apps, APIs | APIs modernes, microservices |
| Batteries incluses | ✅ Oui | ❌ Non |
Quel que soit le framework choisi, vous retrouverez certains concepts fondamentaux :
Une route associe une URL à une fonction Python qui génère la réponse :
@app.route('/articles') # Route
def liste_articles(): # Fonction associée
return "Liste des articles"Les vues sont les fonctions qui traitent les requêtes et retournent des réponses. Elles contiennent la logique métier de votre application.
Les templates sont des fichiers HTML avec des parties dynamiques qui seront remplacées par des données Python :
<h1>Bonjour {{ nom_utilisateur }} !</h1>
<p>Vous avez {{ nombre_messages }} nouveaux messages.</p>Les modèles représentent la structure de vos données et facilitent l'interaction avec la base de données :
class Article:
titre: str
contenu: str
date_publication: datetimeLes middlewares sont des fonctions qui s'exécutent avant ou après le traitement d'une requête (pour la journalisation, l'authentification, etc.).
Comprendre le cycle de vie d'une requête aide à mieux appréhender les frameworks :
1. L'utilisateur entre une URL dans son navigateur
↓
2. Le navigateur envoie une requête HTTP au serveur
↓
3. Le framework reçoit la requête
↓
4. Le framework identifie la route correspondante
↓
5. La fonction de vue associée est exécutée
↓
6. La vue peut accéder à la base de données
↓
7. La vue génère une réponse (HTML, JSON, etc.)
↓
8. Le framework envoie la réponse au navigateur
↓
9. Le navigateur affiche le résultat à l'utilisateur
Dans les sections suivantes, vous découvrirez :
- FastAPI : Comment créer des APIs modernes et performantes
- Flask : Comment construire des applications web légères
- Requêtes HTTP : Comment communiquer avec d'autres services
- APIs REST : Comment créer et consommer des interfaces de programmation
- Bases de données : Comment stocker et récupérer des données avec SQLAlchemy
Avant de commencer le développement web avec Python, assurez-vous de bien maîtriser :
- ✅ Les bases de Python (variables, fonctions, classes)
- ✅ La programmation orientée objet
- ✅ La gestion des erreurs
- ✅ Les décorateurs (concept utilisé pour définir les routes)
- ✅ Les notions de base de HTML (utile mais pas indispensable)
Pour débuter, nous vous recommandons de commencer par FastAPI si vous voulez créer des APIs, ou Flask si vous préférez créer des sites web complets avec des pages HTML.
FastAPI est le choix idéal si :
- Vous voulez apprendre les pratiques modernes
- Vous êtes intéressé par la création d'APIs
- Vous aimez la validation automatique et la documentation
Flask est le choix idéal si :
- Vous débutez complètement en développement web
- Vous voulez comprendre les fondamentaux sans complexité
- Vous préférez une approche progressive et simple
Django peut venir plus tard, une fois que vous aurez compris les concepts de base avec un framework plus simple.
Les frameworks web Python sont des outils puissants qui simplifient grandement le développement d'applications web. Ils gèrent les aspects techniques complexes pour que vous puissiez vous concentrer sur la logique métier de votre application.
Dans les prochaines sections, vous apprendrez à créer vos premières applications web avec FastAPI et Flask, en commençant par des exemples simples puis en progressant vers des concepts plus avancés.
Le développement web peut sembler intimidant au début, mais avec de la pratique et un bon framework, vous serez rapidement capable de créer des applications impressionnantes !