1. Qu'est-ce que l'architecture MTV ?
1.1 Définition
L'architecture MTV (Model-Template-View) est le pattern fondamental de Django qui organise le code en trois composants distincts:
- Models : Gèrent les données
- Templates : Gèrent l'affichage
- Views : Gèrent la logique métier
1.2 Analogie avec un exemple restaurant
1 2 3 |
CLIENT → SERVEUR (View) → CUISINE (Model) ↑ ↓ CLIENT ← ASSIETTE (Template) ← CUISINE |
2. Différence entre MVC et MTV
2.1 Architecture MVC traditionnelle
1 2 3 4 |
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ VUE │ ←→ │ CONTROLEUR │ ←→ │ MODÈLE │ │ (Affichage) │ │ (Logique) │ │ (Données) │ └─────────────┘ └─────────────┘ └─────────────┘ |
2.2 Architecture MTV de Django
1 2 3 4 |
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ TEMPLATE │ ←→ │ VUE │ ←→ │ MODÈLE │ │ (Affichage) │ │ (Logique) │ │ (Données) │ └─────────────┘ └─────────────┘ └─────────────┘ |
2.3 Tableau de correspondance
MVC Traditionnel | Django MTV | Rôle |
---|---|---|
Model | Model | Données |
View | Template | Affichage |
Controller | View | Logique |
3. Les Models (Modèles)
3.1 Rôle principal
Les models définissent la structure des données et gèrent toutes les interactions avec la base de données.
3.2 Fonctions principales
- Structure : des tables de base de données
- Relations : entre les données
- Validation : des données
- Opérations CRUD : (Create, Read, Update, Delete)
3.3 Schéma d'un Model
1 2 3 4 5 6 7 8 9 10 |
┌─────────────────────────┐ │ MODEL │ ├─────────────────────────┤ │ - Définition champs │ │ - Relations │ │ - Validation │ │ - Méthodes métier │ └─────────────────────────┘ ↓ Base de données |
4. Les Views (Vues)
4.1 Rôle principal
Les views contiennent la logique métier qui traite les requêtes et prépare les réponses.
4.2 Fonctions principales
- Réception : des requêtes HTTP
- Traitement : de la logique métier
- Interaction : avec les models
- Préparation : des données pour les templates
4.3 Schéma d'une Vue (View)
1 2 3 4 5 6 7 8 9 |
┌─────────────────────────┐ │ VIEW │ ├─────────────────────────┤ │ - Reçoit requête │ │ - Traite logique │ │ - Interroge models │ │ - Prépare contexte │ │ - Choisit template │ └─────────────────────────┘ |
5. Les Templates
5.1 Rôle principal
Les templates gèrent l'affichage et la présentation des données à l'utilisateur.
5.2 Fonctions principales
- Fonction 1 : Structure HTML
- Fonction 2 : Affichage des données dynamiques
- Fonction 3 : Logique de présentation (boucles, conditions)
- Fonction 4 : Héritage de mise en page
5.3 Schéma d'un Template
1 2 3 4 5 6 7 8 |
┌─────────────────────────┐ │ TEMPLATE │ ├─────────────────────────┤ │ - HTML de base │ │ - Variables {{ }} │ │ - Tags {% %} │ │ - Héritage │ └─────────────────────────┘ |
6. Les URLS Dispatchers (Routeur d'URL)
6.1 Rôle principal
Le URL Dispatcher fait le lien entre les URLs demandées et les views qui doivent les traiter.
6.2 Fonctions principales
- Fonction 1 : Association URLs → Views
- Fonction 2 : Extraction des paramètres d'URL
- Fonction 3 : Organisation hiérarchique des URLs
6.3 Schéma des URLS Dispatchers
1 2 3 4 5 6 7 |
┌─────────────────────────┐ │ URL DISPATCHER │ ├─────────────────────────┤ │ - URLs patterns │ │ - Extraction params │ │ - Routage vers views │ └─────────────────────────┘ |
7. Flux complet de traitement
7.1 Séquence complète
1 2 3 4 5 6 7 |
1. URL → URL Dispatcher 2. URL Dispatcher → View appropriée 3. View → Models (si besoin de données) 4. Models → Base de données 5. View → Template + Données 6. Template → HTML final 7. HTML → Utilisateur |
7.2 Schéma global
1 2 3 4 5 6 7 8 9 10 11 12 13 |
┌─────┐ URL ┌─────────────┐ Données ┌─────────┐ │ NAV │ ──────→ │ URL DISPATCH│ ──────────→ │ VIEW │ │ IG. │ └─────────────┘ └─────────┘ └─────┘ ↑ ↓ ↑ │ ┌─────────┐ │ │ │ MODEL │ HTML │ └─────────┘ ↑ │ ↓ │ │ ┌─────────┐ ┌─────┐ HTML ┌─────────┐ Contexte │ BASE DE │ │ NAV │ ←─────── │ TEMPLATE│ ←─────────── │ DONNÉES │ │ IG. │ └─────────┘ └─────────┘ └─────┘ |
Cette architecture assure une séparation claire des responsabilités, rendant les applications Django plus maintenables et évolutives.
Younes Derfoufi
CRMEF OUJDA