Présentation
Django est un framework Web open source écrit en Python pour développer des applications allant d’un site de contenu à une plateforme métier complète.
Il fournit directement une grande partie des briques habituellement nécessaires à une application Web : routing, vues, accès aux bases de données, migrations, templates, formulaires, authentification, sessions, cache, administration et outils de sécurité.
Cette approche dite « batteries included » réduit le nombre de bibliothèques à assembler pour obtenir une base fonctionnelle et cohérente.
Django peut générer directement des pages HTML avec son moteur de templates ou servir de backend à une interface JavaScript distincte. Les API REST ne font toutefois pas partie du cœur du framework : elles sont souvent construites avec des bibliothèques tierces comme Django REST Framework.
Le framework prend en charge les architectures WSGI traditionnelles et ASGI pour les applications ayant besoin de fonctions asynchrones.
Au 3 octobre 2026, Django 6.1.1 constitue la dernière version officielle. Django 5.2 reste parallèlement la branche LTS destinée aux projets recherchant un support plus long.
Fonctionnalités
ORM et modèles
L’ORM Django permet de représenter les données sous forme de classes Python.
Chaque modèle décrit des champs et relations qui peuvent ensuite être interrogés avec l’API QuerySet sans écrire systématiquement du SQL.
Les relations un-à-un, plusieurs-à-un et plusieurs-à-plusieurs sont prises en charge, ainsi que les agrégations, annotations, expressions et transactions.
Django 6.1 ajoute également des modes permettant de contrôler la manière dont certains champs non chargés sont récupérés depuis la base de données.
Migrations
Django dispose d’un système intégré de migrations de base de données.
Les changements apportés aux modèles peuvent être transformés en fichiers de migration puis appliqués avec les commandes de gestion.
Ces migrations permettent de faire évoluer progressivement le schéma tout en conservant un historique versionné avec le projet.
Bases de données
SQLite est disponible par défaut et convient particulièrement au développement ou aux petits projets.
Pour la production, la documentation Django recommande généralement PostgreSQL.
Django prend également officiellement en charge MySQL, MariaDB et Oracle selon les versions compatibles avec chaque branche du framework.
L’ORM permet de conserver une grande partie du code applicatif indépendamment du moteur choisi, même si certaines fonctions restent spécifiques aux bases de données.
Routing et vues
Le système d’URL associe les chemins d’une application à des vues Python.
Les vues peuvent être écrites sous forme de fonctions ou de classes.
Django fournit des vues génériques pour plusieurs opérations courantes comme l’affichage de listes, de détails, la création ou la modification d’objets.
Les routes peuvent être regroupées par application et utiliser des paramètres dynamiques.
Templates
Le Django Template Language permet de produire des pages HTML à partir de templates.
Variables, filtres, conditions, boucles, héritage et inclusion permettent de construire des interfaces réutilisables.
Le moteur applique par défaut un échappement HTML destiné à réduire les risques d’injection lors de l’affichage de données non fiables.
Django peut également être associé à d’autres moteurs de templates si le projet le nécessite.
Formulaires
Le framework propose un système complet de formulaires.
Les champs peuvent être validés côté serveur et associés à des widgets HTML.
ModelForm peut générer une grande partie d’un formulaire directement depuis un modèle Django.
Cette intégration simplifie les opérations classiques de création et modification de données.
Administration
L’interface d’administration Django peut être générée à partir des modèles enregistrés.
Elle fournit rapidement listes, formulaires, recherches, filtres et gestion des relations.
L’administration est personnalisable avec des classes ModelAdmin, des actions et différents réglages d’affichage.
Elle est surtout destinée aux équipes internes et utilisateurs de confiance, plutôt qu’à constituer automatiquement l’interface publique d’une application.
Authentification et permissions
Django fournit un système intégré pour utilisateurs, mots de passe, sessions et permissions.
Il gère notamment connexion, déconnexion, groupes et permissions associées aux modèles.
Le modèle utilisateur peut être remplacé ou étendu pour répondre aux besoins d’un projet.
Les fonctions d’authentification peuvent également être utilisées avec les API asynchrones modernes du framework.
Sécurité
Django intègre plusieurs protections destinées aux applications Web.
Il propose notamment protection CSRF, échappement contre certaines attaques XSS, protections contre l’injection SQL via l’ORM, gestion sécurisée des mots de passe et mécanismes contre le clickjacking.
Depuis Django 6.0, le framework propose également un support intégré de Content Security Policy — CSP.
Ces mécanismes réduisent les risques courants mais ne remplacent pas une configuration correcte du serveur, des permissions et du code applicatif.
Middleware
Les middlewares interviennent autour du traitement des requêtes et réponses.
Ils peuvent gérer sessions, authentification, sécurité, cache, localisation ou ajouter une logique spécifique au projet.
L’ordre des middlewares influence leur comportement et doit donc être configuré avec attention.
ASGI, WSGI et asynchrone
Django prend en charge WSGI pour les applications synchrones classiques et ASGI pour les architectures asynchrones.
Les vues peuvent être écrites avec async def.
Plusieurs parties du framework disposent également d’API asynchrones, notamment l’ORM, le cache, l’authentification, les sessions et les signaux.
Certaines opérations restent toutefois synchrones ou dépendent de bibliothèques qui ne proposent pas encore une implémentation asynchrone complète.
Cache
Django fournit une API de cache pouvant s’appliquer à une vue complète, une partie de template ou des valeurs individuelles.
Différents backends peuvent être utilisés selon l’architecture, notamment mémoire locale, fichiers, bases de données ou solutions externes compatibles.
Le cache peut réduire le travail effectué par l’application pour les données ou pages fréquemment consultées.
Fichiers statiques et médias
Le framework distingue les fichiers statiques de l’application — CSS, JavaScript, images d’interface — des fichiers médias envoyés par les utilisateurs.
django.contrib.staticfiles rassemble les ressources statiques pour faciliter leur déploiement.
En production, leur distribution est généralement confiée à un serveur Web, un CDN ou un service spécialisé plutôt qu’au serveur de développement Django.
Internationalisation
Django fournit des outils d’internationalisation et de localisation.
Chaînes traduisibles, formats de dates, nombres, fuseaux horaires et choix de langue peuvent être intégrés directement dans l’application.
Le système repose notamment sur des catalogues de traduction compatibles avec GNU gettext.
Commandes et tests
django-admin et manage.py fournissent des commandes pour créer des applications, appliquer les migrations, lancer le serveur de développement ou effectuer différentes opérations de maintenance.
Les développeurs peuvent également créer leurs propres commandes.
Django intègre un framework de tests basé sur les outils Python et fournit des clients permettant de tester vues, formulaires et comportement HTTP.
Cas d’usage
Construire une application métier
L’ORM, les formulaires, l’authentification et l’administration conviennent aux applications comprenant comptes utilisateurs, données structurées et workflows internes.
Django permet de disposer rapidement d’un socle cohérent avant de développer les règles propres au produit.
Créer un CMS ou un site éditorial
Templates, routing, modèles et administration peuvent servir de base à des sites contenant articles, pages, catégories ou médias.
Des CMS complets comme Wagtail sont également construits au-dessus de Django.
Développer un backend Web
Django peut fournir authentification, logique métier et accès aux données à une interface distincte.
Pour construire une API REST importante, il est souvent associé à Django REST Framework ou à une autre bibliothèque spécialisée.
Construire une plateforme SaaS
Gestion des utilisateurs, permissions, sessions, base de données et architecture modulaire permettent de développer tableaux de bord, espaces clients ou applications par abonnement.
Les services externes nécessaires au produit peuvent être intégrés avec les bibliothèques Python correspondantes.
Développer un projet nécessitant une administration interne
L’administration automatique constitue l’un des points forts historiques de Django.
Elle permet de fournir rapidement aux équipes un outil pour consulter et modifier les données sans construire immédiatement un back-office entièrement personnalisé.
Conclusion
Django propose une approche complète et structurée du développement Web avec Python.
ORM, migrations, routing, templates, formulaires, authentification, administration et sécurité forment un ensemble cohérent qui couvre une grande partie des besoins d’une application classique.
Le framework peut aussi évoluer vers des architectures modernes grâce à ASGI et à ses API asynchrones, tout en conservant la compatibilité avec les applications WSGI traditionnelles.
Cette richesse implique davantage de conventions qu’un micro-framework, mais réduit en contrepartie le nombre de décisions et de dépendances nécessaires au démarrage d’un projet.
Pour construire des applications Web Python structurées, maintenables et riches en fonctionnalités, Django reste l’un des frameworks majeurs de l’écosystème Python.
Points d’attention
-
Django 6.1.1 est la dernière version officielle au 3 octobre 2026.
-
Django 6.1 prend en charge Python 3.12, 3.13 et 3.14. Seule la dernière version micro de chaque branche Python est officiellement supportée.
-
Django 5.2 est une version LTS, avec support de sécurité étendu jusqu’en avril 2028. Elle reste adaptée aux projets privilégiant un cycle de mise à niveau plus long.
-
Django 6.0 n’est plus en support principal depuis la sortie de Django 6.1, mais continue de recevoir les correctifs de sécurité et de perte de données jusqu’en avril 2027.
-
Django est gratuit et open source sous licence BSD, y compris pour un usage commercial.
-
PostgreSQL est recommandé par la documentation pour la production, même si d’autres moteurs de base de données sont officiellement pris en charge.
-
Une API REST complète n’est pas incluse directement dans Django. Django REST Framework et d’autres bibliothèques peuvent compléter le framework pour ce besoin.
-
Le serveur fourni par
runserverest destiné au développement. Une application de production doit utiliser une infrastructure WSGI ou ASGI adaptée. -
Le support asynchrone est important mais toutes les opérations ne sont pas nécessairement async-native. Certaines bibliothèques ou portions de code peuvent encore demander une adaptation synchronisée.
-
L’administration Django n’est pas destinée par défaut aux utilisateurs publics. Elle doit rester protégée et réservée aux utilisateurs autorisés.
-
Les migrations et mises à niveau doivent être testées avant déploiement. Les nouvelles versions de Django peuvent supprimer des API arrivées au terme de leur cycle de dépréciation.
-
Les correctifs de sécurité doivent être appliqués rapidement. Le projet Django publie régulièrement des versions correctives pour les branches encore supportées.