Parcours · Python pour le Web
Python pour le Web
Flask, Django, Streamlit et Gradio : quatre manières de transformer du code Python en application accessible. 39 leçons pour comprendre chaque outil et, surtout, savoir lequel choisir.
- leçons
- 39
- modules
- 7
- frameworks
- 4
Avant de commencer
Quel framework choisir ?
Le bon outil dépend de votre besoin, pas de la mode. Quatre repères avant de plonger.
01
Flask
Micro-framework : un fichier, quelques routes.
Idéal : API légère, prototype, contrôle total
02
Django
Tout inclus : ORM, admin, auth, sécurité.
Idéal : application complète, équipe, production
03
Streamlit
Une app data en pur script Python.
Idéal : dashboard, exploration, démo interne
04
Gradio
Une interface autour d'un modèle en quelques lignes.
Idéal : démo de modèle ML, partage rapide
Choisir son framework
Avant d'écrire une ligne de code : comprendre les deux familles d'outils Python pour le Web, où tourne le code, ce que contient vraiment un échange HTTP, et lequel de Flask, FastAPI, Django, Streamlit ou Gradio répond à votre besoin.
5 leçons
Le panorama : deux familles d'outils
Frameworks web (Flask, FastAPI, Django) contre créateurs d'applications data/ML (Streamlit, Gradio) : deux philosophies, deux publics.
Ouvrir la leçonOù tourne le code : client, serveur, WSGI/ASGI
Pourquoi Flask, FastAPI, Django, Streamlit et Gradio ont besoin d'un serveur Python, et comment le serveur parle à votre application.
Ouvrir la leçonHTTP en pratique : requêtes, réponses, statuts
Méthode, chemin, en-têtes, corps, codes de statut, idempotence, cookies et CORS : ce que tous les frameworks web manipulent pour vous.
Ouvrir la leçonComparatif détaillé des cinq outils
Contrôle, batteries incluses, premier écran, chemin jusqu'au produit complet et asynchrone : les axes qui départagent réellement Flask, FastAPI, Django, Streamlit et Gradio.
Ouvrir la leçonL'arbre de décision : lequel pour mon projet ?
Synthèse actionnable : une fonction qui recommande Gradio, Streamlit, FastAPI, Flask ou Django selon le besoin exprimé, et justifie son choix.
Ouvrir la leçonFlask : le micro-framework
Du « Hello World » en cinq lignes à une application structurée, testée et prête pour la production : routage, templates Jinja2, base de données avec SQLAlchemy, API JSON, sessions et mots de passe, tests pytest, blueprints et gunicorn.
8 leçons
Premier serveur Flask
L'application Flask minimale : créer l'objet Flask, déclarer des routes, lancer le serveur de développement avec flask run et comprendre ce qu'il fait.
Ouvrir la leçonRoutes, paramètres et méthodes HTTP
Variables dans l'URL et convertisseurs de type, paramètres de requête, méthodes GET et POST sur une même route, raccourcis @app.get et @app.post.
Ouvrir la leçonTemplates Jinja2
Séparer la logique Python du HTML avec render_template : variables, boucles, conditions, héritage de templates avec extends et block, liens avec url_for.
Ouvrir la leçonBase de données avec Flask-SQLAlchemy
Brancher une vraie base sur Flask : modèle déclaratif SQLAlchemy 2.x avec Mapped et mapped_column, session, select paramétré, get_or_404 et migrations.
Ouvrir la leçonConstruire une API REST JSON
Renvoyer du JSON avec jsonify, choisir les bons codes HTTP (200, 201, 204, 400, 404), valider le corps reçu et structurer des routes REST complètes.
Ouvrir la leçonSessions, connexion et mots de passe
Connecter un utilisateur avec Flask : session signée, mots de passe hachés avec Werkzeug, décorateur login_required, déconnexion et cookies sécurisés.
Ouvrir la leçonTester une app Flask avec pytest
Écrire des tests automatisés pour une API Flask : fixture pytest, application de test créée par une factory, client de test, assertions sur le statut et le JSON.
Ouvrir la leçonStructurer et déployer
Organiser un projet Flask avec des blueprints et une application factory, lire la configuration dans l'environnement, puis servir l'application en production avec gunicorn.
Ouvrir la leçonFastAPI : API modernes et typées
FastAPI est devenu la référence Python pour les API JSON : vous déclarez des types, il en tire la validation, la conversion, les erreurs 422 et une documentation interactive. Construisez une API de réservation pas à pas, de la première route aux tests automatisés et au lancement en production.
4 leçons
Première API FastAPI
Créer l'application, déclarer des routes GET, typer les paramètres de chemin et de requête, et découvrir la documentation interactive générée depuis les types.
Ouvrir la leçonValider les données avec Pydantic
Décrire le corps des requêtes avec des modèles Pydantic, filtrer les réponses avec response_model, et renvoyer les bons codes : 201, 404 et 422.
Ouvrir la leçonDépendances, async et CORS
Factoriser la sécurité avec Depends, savoir quand async def aide vraiment, et ouvrir l'API à un front web précis avec CORSMiddleware.
Ouvrir la leçonTester et déployer une API FastAPI
Écrire des tests pytest avec TestClient, lire la configuration dans l'environnement, et lancer l'API en production derrière un reverse proxy HTTPS.
Ouvrir la leçonDjango : le framework complet
Le framework « batteries incluses » de Python : ORM et relations, migrations, back-office généré, formulaires validés, authentification et permissions, API REST avec DRF, tests et mise en production. Un seul fil rouge, la boutique, du premier modèle au service durci.
8 leçons
Philosophie MVT et structure du projet
« Batteries incluses », l'architecture Modèle-Vue-Template, et la différence cruciale entre un projet et une application.
Ouvrir la leçonModèles et ORM
Décrire ses tables en classes Python, générer les migrations, et interroger la base sans écrire de SQL grâce à l'ORM.
Ouvrir la leçonRelations entre modèles et requêtes efficaces
ForeignKey, on_delete, related_name et ManyToManyField ; traverser les relations dans l'ORM, repérer le problème N+1 et le corriger avec select_related, prefetch_related et annotate.
Ouvrir la leçonL'interface d'administration générée
Le superpouvoir de Django : un back-office complet (CRUD, recherche, filtres, objets liés) généré automatiquement à partir de vos modèles.
Ouvrir la leçonVues, URLs et templates
Le trajet d'une requête : du fichier urls.py vers une vue qui interroge l'ORM, puis vers un template rendu en HTML. Page de liste, page de détail et erreur 404 propre.
Ouvrir la leçonFormulaires, validation et tests
Saisir et valider des données en sécurité : forms.Form, ModelForm, validation personnalisée, protection CSRF, puis vérifier le tout avec le client de test de Django.
Ouvrir la leçonAuthentification, sessions et permissions
Le système d'utilisateurs intégré : connexion et déconnexion, sessions, @login_required, LoginRequiredMixin, permissions et groupes, mots de passe hachés et modèle utilisateur personnalisé.
Ouvrir la leçonAPI avec DRF, tests et mise en production
Exposer ses données en API REST avec Django REST Framework, sans l'ouvrir en écriture à tous : permissions, pagination, test avec APIClient, puis settings durcis, check --deploy et gunicorn.
Ouvrir la leçonStreamlit : applications de données
Transformez un script Python en application web interactive sans écrire de HTML : widgets et formulaires, tableaux et graphiques Pandas, état de session, cache, interface de chat pour un LLM, navigation multipage, secrets et déploiement. Le chemin le plus court entre une analyse et un outil partagé avec son équipe.
6 leçons
Première app Streamlit
Du script Python à l'application web : les fonctions st.* qui dessinent la page, la commande streamlit run et le modèle d'exécution top-down qui explique tout le reste du module.
Ouvrir la leçonWidgets, formulaires et callbacks
Rendre l'app interactive : lire la valeur d'un widget, le relier à st.session_state avec key=, réagir avec on_change / on_click et regrouper plusieurs saisies dans un st.form validé en une seule fois.
Ouvrir la leçonDonnées, tableaux et graphiques
Afficher un DataFrame Pandas avec st.dataframe, mettre en avant un indicateur avec st.metric et tracer une tendance avec st.line_chart, sans tomber dans le piège des mois triés par ordre alphabétique.
Ouvrir la leçonÉtat de session, cache et fragments
Conserver des valeurs entre les réexécutions avec st.session_state, éviter de recalculer le coûteux avec @st.cache_data (et ttl=), partager une connexion avec @st.cache_resource et ne réexécuter qu'une partie de la page avec @st.fragment.
Ouvrir la leçonInterface de chat pour un LLM
Construire l'interface de chat d'un assistant : historique dans st.session_state, bulles st.chat_message, saisie st.chat_input, réponse affichée en flux avec st.write_stream et clé d'API rangée dans st.secrets.
Ouvrir la leçonMise en page, multipage et déploiement
Structurer l'app avec une barre latérale et des colonnes, la découper en pages avec st.Page et st.navigation, ranger les secrets dans st.secrets, puis la mettre en ligne sur Streamlit Community Cloud.
Ouvrir la leçonGradio : démos de modèles et chatbots
Transformez une fonction Python, un modèle de machine learning ou un assistant conversationnel en démo web partageable, sans écrire de HTML. De gr.Interface à gr.ChatInterface en streaming, jusqu'au déploiement sur Hugging Face Spaces.
6 leçons
Première démo avec Interface
Le trio fn / inputs / outputs : envelopper une fonction Python dans une interface web en trois arguments, puis la lancer avec launch().
Ouvrir la leçonComposants d'entrée et de sortie
Textbox, Number, Slider, Image, Audio, Label… : choisir le bon composant fixe le type de donnée que reçoit et renvoie votre fonction.
Ouvrir la leçonBlocks : mise en page, état et enchaînements
Quand Interface ne suffit plus : gr.Blocks donne le contrôle de la disposition (Row, Column), du câblage des événements (.click, .then) et d'un état propre à chaque visiteur (gr.State).
Ouvrir la leçonBrancher un vrai modèle ML
Le cœur de Gradio : exposer une fonction de prédiction adossée à un pipeline Hugging Face transformers, afficher tous les scores dans un Label et guider l'utilisateur avec des exemples.
Ouvrir la leçonChatbot avec ChatInterface et streaming
Le cas d'usage n°1 de Gradio en 2026 : une interface de chat pour un modèle de langage, avec historique, réponse affichée mot à mot, exemples et réglages supplémentaires.
Ouvrir la leçonPartage public et Hugging Face Spaces
De la démo locale au lien public : share=True pour un partage ponctuel d'une semaine au plus, puis un déploiement durable sur Hugging Face Spaces avec app.py, README.md (en-tête YAML) et requirements.txt.
Ouvrir la leçonMettre en production : sécurité et conteneurs
Le module qui relie tous les frameworks : repérer et corriger les failles web les plus courantes (injection, XSS, CSRF, contrôle d'accès, secrets), puis livrer n'importe quelle app Python dans un conteneur Docker propre, configuré par l'environnement et servi derrière un proxy HTTPS.
2 leçons
Sécurité web : les failles à connaître
Les grandes familles de failles décrites par l'OWASP, vues côté Python : injection SQL, XSS, CSRF, contrôle d'accès cassé, secrets exposés, mots de passe, CORS, dépendances vulnérables, en-têtes de sécurité et limitation de débit.
Ouvrir la leçonConteneuriser et déployer une app Python
Écrire un Dockerfile propre (image slim, cache des dépendances, utilisateur non root, CMD au format exec), un .dockerignore, configurer l'app par l'environnement, ajouter un healthcheck, puis choisir où l'héberger : PaaS, VM ou plateforme spécialisée.
Ouvrir la leçon