Il pattern MVT (Model-View-Template) è un pattern di progettazione software usato nel framework Django, un framework di sviluppo web di alto livello basato su Python.
1. Model: In Django, il “Model” è la verità definitiva per i dati. Questo modulo gestisce principalmente le basi di dati. Contiene campi e comportamenti essenziali dei dati che si desidera archiviare. Essenzialmente, un modello è un singolo e definitivo sorgente di informazioni su i dati in Django.
1. View: La “View” è la parte di dati presentata all’utente e la logica affinché la corrispondenza tra il modello e le informazioni dell’utente sia esatta. Funziona come un ponte tra i modelli e i template.
1. Template: Il “Template” è la parte con la quale l’utente interagisce. Questa parte consiste in HTML, CSS, Javascript e altre tecnologie seminari per l’interfaccia utente.
Ad esempio, supponiamo di creare un’applicazione di blog. Nella progettazione di questa applicazione:
- Il Model gestirebbe tutti i dati relativi ai post del blog, come titolo, autore, contenuto del post, data di pubblicazione, ecc.
- La View gestirebbe il processo di prelievo dei dati relativi ai post del blog dal database (usando il Model), e passerebbe quei dati al Template.
- Il Template sarebbe responsabile per la presentazione di questi dati, mostrando ogni post del blog in un formato leggibile per l’utente.
Per citare una fonte affidabile, la documentazione di Django 1 offre una spiegazione approfondita di come lavora Django con il concetto di MVT:
“… I modelli di Django sono una sorgente di informazioni sui tuoi dati. Contengono i campi essenziali e i comportamenti dei dati memorizzati. Django segue il principio DRY (Don’t Repeat Yourself). L’obiettivo di DRY è ridurre la ripetizione di informazioni. … Le viste di Django hanno l’obiettivo di contenere la logica necessaria per gestire le richieste HTTP specifiche del tuo sito Web… Il sistema di template di Django offre un modo potente per esprimere come i dati dovrebbero essere trasformati in output testuale, compresa la formattazione di date, numeri e stringhe in qualsiasi output testuale (HTML, CSV, XML e così via).”
^1: Django documentation, Model-View-Template, available at 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