Le modèle MVT (Modèle-Vue-Template) est une conception architecturale de Django, un cadre (framework) populaire pour le développement web en Python. Il est légèrement différent du modèle traditionnel MVC (Modèle-Vue-Contrôleur), mais fonctionne de manière similaire.
“Django est un framework pour les perfectionnistes avec des échéances” selon son slogan officiel. Il met fortement l’accent sur la réutilisabilité et la “ne pas répéter soi-même” ou philosophie DRY.
Dans ce jargon, “Modèle” se réfère à la couche d’accès aux données de votre application. Il contient des champs et des comportements essentiels aux données que vous stockez. Chaque modèle est associé à une seule base de données. Cette couche interagit avec la base de données, en extrayant les données nécessaires et en effectuant les opérations CRUD (Créer, Lire, Mettre à jour, Effacer).
La “Vue”, d’autre part, est la couche qui contient la logique qui est accessible par une requête URL. Elle est responsable de la logique métier et agit comme un pont entre le Modèle et le Template. N’importe quelle logique qui n’est pas relative aux données devrait appartenir à la vue.
Le “Template” est la couche qui gère la présentation des données. Il définit comment les données seront affichées à l’utilisateur, en les présentant dans un format satisfaisant et facile à lire.
Par exemple, considérons un blog en ligne. Les différents modèles peuvent inclure des utilisateurs, des articles de blog et des commentaires. Ces modèles interagissent avec la base de données, en ajoutant de nouveaux articles, en récupérant des articles existants pour affichage, etc. Les vues pourraient inclure la logique pour la page d’accueil, une page pour lister tous les articles de blog et une page pour afficher un article de blog individuel. Ces vues utiliseraient les modèles pour récupérer les données nécessaires de la base de données, puis les passeraient aux templates pour affichage.
L’un des grands avantages de l’approche MVT est qu’elle encourage la séparation des préoccupations. Cela rend le code plus facile à maintenir et à étendre puisque chaque partie de l’application se concentre sur une tâche spécifique.
Ressources utilisées:
- https://docs.djangoproject.com/en/3.2/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names
- https://www.geeksforgeeks.org/difference-between-mvt-model-view-template-and-mvc-model-view-controller/
- https://fr.wikipedia.org/wiki/Mod%C3%A8le-vue-contr%C3%B4leur
- https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Intro_to_Django