Django
Définition
Django est un framework web full-stack open-source haute performance écrit en Python selon le pattern architectural et qui met l’accent sur le développement rapide, la conception pragmatique et le principe « ne pas se répéter » (DRY).
Vue d’ensemble
Créé par Adrian Holovaty et Simon Willison en 2003 et open-sourcé en 2005, Django a été initialement développé pour alimenter le journal Lawrence Journal-World. Il propose une approche « batteries incluses » avec un panneau d’administration intégré, un ORM, l’authentification et le routage d’URL. Django alimente Instagram, Pinterest, Disqus et les produits Mozilla.
Fonctionnalités clés
- ORM (Object-Relational Mapper) : Couche d’abstraction de base de données prenant en charge PostgreSQL, MySQL, SQLite, Oracle
- Panneau d’administration : Interface d’administration CRUD auto-générée pour les modèles de base de données
- Authentification : Authentification utilisateur intégrée, permissions et sessions
- Routage d’URL : Patterns d’URL propres et RESTful
- Moteur de templates : Templating puissant avec héritage et personnalisation
- Formulaires : Gestion, validation et rendu des formulaires
- Sécurité : Protection intégrée contre CSRF, XSS, injections SQL, clickjacking
- Migrations : Gestion automatisée du schéma de base de données
- Cache : Framework de cache multi-niveaux
- i18n/l10n : Support d’internationalisation et de localisation
Architecture (Pattern MTV)
- Model : Couche de données, définit le schéma de base de données et la logique métier
- Template : Couche de présentation, templates HTML avec le langage de template Django
- View : Logique métier, traite les requêtes et retourne des réponses
- URLconf : Route les URL vers les views
Versions majeures
|| Version | Année | Fonctionnalités clés | ||———|——|————–| || Django 1.0 | 2008 | Version stable initiale | || Django 1.5 | 2013 | Apps plugables, modèles d’utilisateur personnalisables | || Django 1.7 | 2014 | Migrations intégrées, modifications du chargement des apps | || Django 2.0 | 2017 | Python 3+ uniquement, aperçu des views async | || Django 3.0 | 2020 | Support async (ASGI), SQLite 3.35+, datetimes sensibles au fuseau horaire | || Django 4.0 | 2021 | Suppression des fonctionnalités dépréciées, async amélioré, tokens de réinitialisation de mot de passe | || Django 5.0 | 2023 | Clés primaires personnalisables, admin amélioré, ORM async |
Écosystème Django
|| Package | Objectif | ||———|———| || Django REST Framework | Développement d’API avec sérialiseurs et viewsets | || Celery | File d’attente de tâches distribuée pour les jobs en arrière-plan | || Django Channels | Support WebSocket pour les fonctionnalités en temps réel | || Django Ninja | Framework API rapide et moderne | || Wagtail | Système de gestion de contenu construit sur Django | || Django CMS | Système de gestion de contenu flexible |
Licence
Django est publié sous la BSD 3-Clause License, une licence open-source permissive approuvée par l’OSI. Il est libre d’utilisation, de modification et de distribution pour tout usage, y compris commercial.
Voir django/django pour plus de détails.
Cas d’utilisation
- Systèmes de gestion de contenu
- Plates-formes de commerce électronique
- Réseaux sociaux et sites communautaires
- Backends API (avec DRF)
- Applications web axées sur les données
- Prototypage et développement de MVP
Frameworks associés
- Ruby On Rails | Micro-framework Python léger (pas full-stack)
- FastAPI | Framework Python moderne pour les API avec support async