119 votes

Django vs. Contrôleur de vue modèle

Est-ce que quelqu'un peut m'expliquer où sont les différences entre Django et le pattern Model View Controller?

Sur le plan fonctionnel, que pouvons-nous attendre de ces différences - par exemple, qu'est-ce qui fonctionne différemment lorsque l'on compare Django à, par exemple, Ruby on Rails?

148voto

Paolo Moretti Points 9519

Selon le Django Livre, Django suit le modèle MVC d'assez près pour être appelé un framework MVC.

Django a été appelé MTV cadre, car le contrôleur est géré par le framework lui-même et la plupart de l'excitation se produit dans des modèles, des modèles et des points de vue.

Vous pouvez lire plus sur MTV / MVC ici:

La MTV (ou MVC) Modèle de Développement

Si vous êtes familier avec d'autres MVC Web-cadres de développement, tels que Ruby on Rails, vous pouvez envisager de Django vues les contrôleurset Modèles Django à la vue.

C'est une regrettable confusion portées par les différents les interprétations de la MVC.

Dans Django interprétation de la MVC, la vue décrit les données qui obtient présenté à l'utilisateur; il n'est pas nécessairement juste comment les données apparence, mais dont les données sont présentées.

En revanche, Ruby on Rails et les cadres similaires suggèrent que le contrôleur du travail comprend décider laquelle des données sont présentés à l'utilisateur, tandis que la vue est strictement comment l' les données de regards, pas de données présentées.

25voto

Paul D. Waite Points 35456

Le Django FAQ en lui-même est un endroit décent pour commencer:

Gardez à l'esprit que "Modèle Vue Contrôleur" est seulement un modèle, c'est à dire une tentative de décrire une architecture commune. Donc, une meilleure question pourrait être "Comment Django ajuster le Modèle-Vue-Contrôleur modèle?"

11voto

grosshat Points 879

Lorsque vous codez, sans penser aux noms des éléments du framework, il n'y a pas de différence substantielle entre, par exemple, RoR. Mais cela dépend de l'utilisation que vous en donnez models , car dans Django, ils contiennent facilement une logique qui, dans d'autres cadres, resterait au niveau du contrôleur.

Les view sur Django ont tendance à être un ensemble de requêtes pour extraire des données et les transmettre au modèle.

7voto

Samuele Mattiuzzo Points 4769

Dans MVT, une demande à une URL est envoyée à une vue. Cette vue appelle le modèle, effectue des manipulations et prépare les données pour la sortie. Les données sont transmises à un modèle qui est rendu en réponse. idéalement, dans les cadres Web, le contrôleur est masqué.

C'est là que réside la différence par rapport à MVC: dans mvc, l'utilisateur interagit avec l'interface graphique, le contrôleur gère la demande, notifie le modèle et la vue interroge le modèle pour afficher le résultat à l'utilisateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X