Qualcuno può spiegarmi dove sono le differenze tra Django e il pattern Model View Controller?
Funzionalmente, cosa possiamo aspettarci da queste differenze, cioè cosa funziona in modo diverso confrontando Django, ad esempio, con Ruby on Rails?
Qualcuno può spiegarmi dove sono le differenze tra Django e il pattern Model View Controller?
Funzionalmente, cosa possiamo aspettarci da queste differenze, cioè cosa funziona in modo diverso confrontando Django, ad esempio, con Ruby on Rails?
Risposte:
Secondo Django Book , Django segue il pattern MVC abbastanza da vicino da essere chiamato framework MVC.
Django è stato definito un framework MTV perché il controller è gestito dal framework stesso e la maggior parte dell'entusiasmo avviene in modelli, modelli e visualizzazioni.
Puoi leggere di più su MTV / MVC qui:
Il pattern di sviluppo MTV (o MVC)
Se hai familiarità con altri framework di sviluppo Web MVC, come Ruby on Rails, potresti considerare le viste Django come controller e i modelli Django come visualizzazioni .
Questa è una sfortunata confusione causata da diverse interpretazioni di MVC.
Nell'interpretazione di Django di MVC, la vista descrive i dati che vengono presentati all'utente; non è necessariamente solo come appaiono i dati, ma quali dati vengono presentati.
Al contrario, Ruby on Rails e framework simili suggeriscono che il compito del controller include decidere quali dati vengono presentati all'utente, mentre la visualizzazione è strettamente come appaiono i dati, non quali dati vengono presentati.
La stessa FAQ di Django è un buon punto di partenza:
Nella nostra interpretazione di MVC, la "vista" descrive i dati che vengono presentati all'utente. Non è necessariamente come appaiono i dati, ma quali dati vengono presentati. La vista descrive quali dati vedi, non come li vedi. È una sottile distinzione.
...
Inoltre, è sensato separare il contenuto dalla presentazione, che è qui che entrano in gioco i modelli. In Django, una "vista" descrive quali dati vengono presentati, ma una vista normalmente delega a un modello, che descrive come vengono presentati i dati.
Dove si inserisce il "controllore", allora? Nel caso di Django, è probabilmente il framework stesso: il meccanismo che invia una richiesta alla vista appropriata, in base alla configurazione dell'URL di Django.
Se sei affamato di acronimi, potresti dire che Django è un framework "MTV", ovvero "modello", "modello" e "visualizzazione". Quella rottura ha molto più senso.
Tieni presente che "Model View Controller" è solo un modello, ovvero un tentativo di descrivere un'architettura comune. Quindi una domanda migliore potrebbe essere "Quanto bene Django si adatta al pattern Model View Controller?"
Quando si codifica, senza pensare ai nomi dei pezzi del framework, non ci sono differenze sospettose tra, ad esempio RoR. Ma dipende dall'uso che ne fai models
, dato che su Django contengono facilmente una logica che su altri framework rimarrebbe a livello di controller.
L' view
on Django tende ad essere una serie di query per i dati recupero, e passarle al modello.
views
in Django è qualcosa come a controller
in MVC e a template
in Django è più probabile aviews
In mvt, una richiesta a un URL viene inviata a una vista. Questa vista richiama il modello, esegue manipolazioni e prepara i dati per l'output. I dati vengono passati a un modello che viene renderizzato ed emesso come risposta. idealmente nei framework web, il controller è nascosto alla vista.
Qui è dove la differenza è da MVC: in mvc, l'utente interagisce con la gui, il controller gestisce la richiesta e notifica il modello e la vista interroga il modello per mostrare il risultato all'utente.