Architecture MVC en Python
Introduction à l’architecture MVC
L’architecture MVC (Modèle – Vue – Contrôleur) est un modèle de
conception qui permet de séparer clairement : - le traitement des
données (Model), - la logique métier et les actions (Controller), -
l’affichage ou présentation (View).
Cette séparation améliore : - la maintenabilité, - la structure du code, - la
réutilisabilité des composants.
1. Les trois composants
1.1 Modèle (Model)
Le Modèle représente les données et la logique associée.
Il gère : - la structure des données, - l’accès aux données (fichiers, base de
données), - la gestion des règles métiers.
Exemple : une classe Produit ou une classe UserDAO.
1.2 Vue (View)
La Vue est responsable de l’affichage.
Elle peut être : - une interface console, - une interface Tkinter, - des
templates HTML dans un framework web.
Elle ne contient aucune logique métier.
1.3 Contrôleur (Controller)
Le Contrôleur reçoit les actions de l’utilisateur et coordonne le flux entre le
modèle et la vue.
Il : - récupère les données depuis le modèle, - envoie ces données à la vue, -
traite les entrées de l’utilisateur.
2. Exemple simple d’une architecture MVC en
Python (sans framework)
Structure du projet
ProjetMVC/
[Link]
[Link]
[Link]
[Link]
2.1 [Link]
class Produit:
def __init__(self, id, nom, prix):
[Link] = id
[Link] = nom
[Link] = prix
def __str__(self):
return f"{[Link]} - {[Link]}€"
class BoutiqueModel:
def __init__(self):
[Link] = []
def ajouter_produit(self, produit):
[Link](produit)
def liste_produits(self):
return [Link]
2.2 [Link]
class BoutiqueView:
def afficher_liste(self, produits):
print("Liste des produits :")
for p in produits:
print(" -", p)
def afficher_message(self, msg):
print(msg)
2.3 [Link]
from model import Produit, BoutiqueModel
from view import BoutiqueView
class BoutiqueController:
def __init__(self):
[Link] = BoutiqueModel()
[Link] = BoutiqueView()
def ajouter_produit(self, id, nom, prix):
produit = Produit(id, nom, prix)
[Link].ajouter_produit(produit)
[Link].afficher_message(f"Produit '{nom}' ajouté.")
def afficher_produits(self):
produits = [Link].liste_produits()
[Link].afficher_liste(produits)
2.4 [Link]
from controller import BoutiqueController
controller = BoutiqueController()
controller.ajouter_produit(1, "Chaussures", 50)
controller.ajouter_produit(2, "T-shirt", 20)
controller.afficher_produits()
3. Avantages du MVC en Python
Séparation claire du code
Structure adaptable aux projets moyens et grands
Plus maintenable et testable
Adapté à des frameworks comme Django ou Flask
4. MVC dans les frameworks Python
Django (Architecture MTV)
Django utilise une architecture proche du MVC : - Model = Modèle -
Template = Vue - View = Contrôleur (logique métier)
Flask (MVC simple)
Avec Flask : - Model = classes Python / ORM - View = templates Jinja2 -
Controller = routes Flask
Conclusion
L’architecture MVC permet de structurer proprement vos applications
Python. Ce modèle devient essentiel dès que votre projet commence à
prendre de l’ampleur.
Souhaites-tu que j’ajoute : - un mini-projet MVC complet ? - une version plus
avancée (ORM, base de données, Flask) ? - un diagramme UML du MVC ?