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

Références