Introduction à Django

Django est un framework d'application web open source écrit en Python.

Avec Django, les développeurs Python peuvent facilement réaliser la majeure partie de ce qu'exige un site web de production avec très peu de code, et développer davantage des services web complets.

Django fournit les outils nécessaires au développement full-stack, notamment l'ORM de base de données, le moteur de templates, le système de routage, l'authentification des utilisateurs, etc., ce qui réduit considérablement le code répétitif.

Philosophie de Django :

  • DRY(Don't Repeat Yourself):Évite le code répétitif et favorise la réutilisation (comme l'héritage de templates et l'héritage de modèles).
  • Convention plutôt que configuration :Fournit des configurations pertinentes par défaut (comme une interface d'administration générée automatiquement), ce qui réduit les coûts de décision.
  • Développement rapide :Peut être efficacement mené du prototype à l'environnement de production.

Django suit la structure du framework MVC (Model-View-Controller), mais dans Django, elle est plus souvent appelée MTV (Model-Template-View).

Fonctionnalités intégrées

FonctionnalitésDescription
Backend d'administrationGénère automatiquement une interface d'administration, éliminant le besoin d'écrire manuellement la logique CRUD.
ORMUtilisez des classes Python pour manipuler la base de données sans écrire de SQL.
Traitement des formulairesValidation de formulaire intégrée pour prévenir les attaques CSRF.
Authentification des utilisateursFournit la connexion, l'inscription et la gestion des permissions (django.contrib.auth)。
Système de routageMappage d'URL flexible avec prise en charge des expressions régulières.
Mécanisme de cachePrise en charge de backends tels que Memcached, Redis.

Fonctionnalités principales

  • Développement rapide :Django offre une multitude de fonctionnalités intégrées, telles que l'authentification, le back-office d'administration et la gestion des formulaires, ce qui permet aux développeurs de se concentrer sur la logique métier plutôt que sur l'implémentation de bas niveau.
  • Back-office d'administration automatisé :Avec une simple définition de modèle, une puissante interface d'administration peut être générée, prenant en charge les opérations de création, lecture, mise à jour et suppression.
  • Mappage de base de données ORM :L'ORM intégré de Django (Object-Relational Mapping) permet aux développeurs d'interagir avec la base de données à l'aide de classes Python sans écrire de SQL.
  • Routage d'URL puissant :Utilisez des expressions régulières pour définir des URL de manière flexible et implémenter facilement le routage des pages.
  • Moteur de gabarits :Le système de gabarits puissant intégré prend en charge les jugements logiques et le traitement des boucles, ce qui facilite le rendu des pages HTML.
  • Prise en charge de l'internationalisation :Django prend en charge l'internationalisation multilingue, ce qui le rend bien adapté aux applications mondiales.
  • Haute sécurité :Mesures de sécurité intégrées, telles que la prévention des injections SQL, des attaques XSS, des attaques CSRF, etc.
  • Communauté et extensions riches :Un grand nombre de bibliothèques tierces open source, telles que Django REST framework et Django CMS, permettent une extension rapide des fonctionnalités.

Modèles MVC et MTV

MVC (Modèle-Vue-Contrôleur)

  • Modèle (model): Gère l'interaction avec la base de données, définit la structure des données et la logique métier.

  • Vue: Responsable de la présentation des données, générant la page HTML que les utilisateurs voient.

  • Contrôleur: Reçoit les requêtes des utilisateurs, appelle le Modèle pour traiter les données et transmet les résultats à la Vue pour qu'elle effectue le rendu de la page.

Processus :

  1. L'utilisateur envoie une requête au Contrôleur.

  2. Le Contrôleur gère la logique et appelle le Modèle pour récupérer les données.

  3. Le Contrôleur transmet les données à la Vue.

  4. La Vue effectue le rendu et renvoie la page HTML à l'utilisateur.

MVT (Model-Template-View) — l'approche d'implémentation de Django

Django adopte le modèle de conceptionMVT, similaire à MVC, mais avec quelques différences :

  • Modèle (model): Interagit avec la base de données pour gérer la création, la lecture, la mise à jour et la suppression des données.

  • Template (template): Responsable du rendu de la page, générant le contenu HTML final.

  • Vue: La Vue de Django ressemble davantage au rôle de contrôleur ; elle reçoit la requête et décide quel template et quelles données utiliser.

Processus :

  1. L'utilisateur visite une URL, et la requête est traitée par le système de Djangourls.pyCorrespond à la vue correspondante.

  2. La vue gère la logique métier et appelle le modèle pour récupérer les données.

  3. La vue transmet les données au gabarit.

  4. Le gabarit effectue le rendu du HTML et le renvoie finalement à l'utilisateur.


Scénarios d'application pour Django

Projets adaptés à Django :

  • ✅ Systèmes de gestion de contenu (CMS) (par ex., sites d'actualités, blogs)
  • ✅ Plateformes sociales (systèmes d'utilisateurs, publication d'activités)
  • ✅ Sites de commerce électronique (gestion des commandes, intégration des paiements)
  • ✅ API backend (intégré à Django REST framework)

Scénarios inadaptés :

  • ❌ Systèmes temps réel avec des exigences de performances ultra élevées (par ex., plateformes de trading à haute fréquence ; Go ou Rust recommandés)
  • ❌ Microservices extrêmement légers (on peut envisager Flask ou FastAPI)

Django vs autres frameworks

FrameworkFonctionnalités
FlaskLéger et flexible, adapté aux petits projets ou aux microservices.
FastAPIPrise en charge asynchrone robuste, adaptée au développement d'API à hautes performances.
Ruby on RailsSimilaire à Django, mais utilisant le langage Ruby.
LaravelUn framework MVC de l'écosystème PHP, avec des fonctionnalités similaires à Django.

Avantages de Django :

  • "Prêt à l'emploi" : une fonctionnalité complète peut être obtenue sans installer de plugins supplémentaires.
  • Sécurité : protège automatiquement contre les attaques courantes telles que l'injection SQL, le XSS et le CSRF.
  • Communauté active : riches bibliothèques tierces (comme Django REST framework et Django CMS).
autres extensions