Come funziona l'architettura M.T.V. di Django?

Pubblicato da Michele Saba

Prima di iniziare...

Se stai leggendo queste righe è ragionevole assumere che tu intenda imparare Django, giusto? Ti interesserà allora sapere che questa lezione è parte del nostro corso Guida Pratica e Completa a Django, Python e Bootstrap. Si tratta del nostro corso professionale più completo, pensato per fornirti conoscenze pratiche spendibili da subito nel mondo dello sviluppo software e dello sviluppo web con Python, Django, Bootstrap, HTML e CSS. Come tutti i nostri corsi professionali anche questo ha un costo... ma pensiamo sia un costo più che ragionevole e adatto, quasi, a tutti. Scopri di più e inizia subito!


Architettura M.T.V.

Django, uno dei web framework Python più famosi e alla base di siti del calibro di Instagram e Mozilla, utilizza una versione particolare dell'architettura MVC (Model View Controller) che prende il nome di MTV - ovvero Model Template View.

In questa lezione parleremo proprio di questo analizzando nel dettaglio il funzionamento del framework. Ma prima è bene chiedersi...

Come funziona Django?

Se prendiamo in considerazione un livello di astrazione molto elevato, possiamo interpretare il funzionamento di un sito web scritto con Django in questo modo: il framework riceve una richiesta in ingresso, la valuta, la processa e se si tratta di una richiesta valida fornisce una risposta sotto forma di pagina HTML:

request-response

Occupiamoci dunque di capire che cosa succede all'interno di questa black box: come fa Django a ricevere queste richieste? In che maniera le processa e in che modo formula una risposta?


L’architettura MVC

L'architettura di Django si basa sul design pattern MVC, acronimo di Model View Controller. Lo scopo di questa scelta di design è la suddivisione della logica in tre parti fondamentali favorendo modularità, sviluppo collaborativo e riutilizzo del codice oltre a rendere l'applicazione più flessibile e scalabile.

Questo è lo schema del pattern architetturale MVC:

architettura-MVC

Ciascuna delle componenti svolge un ruolo preciso:

  • M - Model: definisce la struttura dei dati, ovvero quali dati l'app debba contenere
  • V - View: descrive come i dati dell'app vadano mostrati
  • C - Controller: contiene la logica che aggiorna i Model e/o le View in risposta agli input forniti dall'utente


L’architettura MTV di Django

Django interpreta il pattern MVC a modo suo, in modo tale che il Controller risulti in realtà il framework in sé, le View non scelgano come i dati vadano mostrati bensì quali dati mostrare e il come mostrarli viene in realtà deciso nei Template. Citando una domanda delle FAQ di Django:

  • D: Django sembra essere un framework di tipo MVC ma chiamate le view Controller, mentre la View corrisponde ai «template». Come mai non usate i nomi standard?
  • A: Bè, i nomi standard sono opinabili.

Siccome la parte del Controller è gestita dal framework e la View è rappresentata dai Template, Django utilizza un framework MTV, ovvero Model Template View.

Come funziona l'architettura MTV?

Questo è uno schema dell'architettura MTV di Django:

architettura-MTV

Per prima cosa quando viene effettuata una richiesta HTTP essa viene confrontata con gli URL, che sono una “mappa” delle risorse disponibili. La richiesta viene quindi inoltrata alla View che la gestisce producendo una risposta HTTP della cui formattazione si occuperanno i template, mentre il Model fornirà la logica per accedere ai dati e convertirli in tabelle nel database. Riassumendo:

  • M - Model: “data access layer” - Definisce la struttura delle entità del nostro sito, tradotte poi in tabelle nel database
  • T - Template: “presentation layer” - Descrive come i dati vadano mostrati nelle pagine web
  • V - View: “business logic layer” - Gestisce le richieste e le risposte HTTP, dispone della logica per sapere a quali dati accedere tramite i model e delega la formattazione della risposa ai template

Torneremo più volte su ciascuna di queste componenti entrando nel dettaglio del loro funzionamento. Per ora ciò che conta davvero è tenere a mente un'idea del funzionamento del pattern MTV in modo da avere una visione d'insieme di come funziona il framework e di ciò che studieremo.


Django è un framework davvero fantastico: completo, sicuro, versatile, scalabile, e molto altro. Questo sito stesso è stato scritto utilizzando Django, così come il backend di Instagram, Quora, Udemy, Mozilla... e davvero tantissimi altri.

C'è chi lo sceglie per la sua potenza, chi per la sua facilità d'uso, chi per il supporto della comunità. Qualsiasi sia il motivo per cui lo stai scegliendo, ben fatto! Come già detto a inizio articolo, abbiamo un corso completo di oltre 23 ore al riguardo. Scopri di più e inizia subito!


Vuoi imparare Python come un/a professionista? Dai uno sguardo ai nostri