Может ли кто-нибудь объяснить мне, в чем разница между Django и шаблоном Model View Controller?
С функциональной точки зрения, что мы можем ожидать от этих различий - то есть, что работает по-разному при сравнении Django, например, с Ruby on Rails?
Может ли кто-нибудь объяснить мне, в чем разница между Django и шаблоном Model View Controller?
С функциональной точки зрения, что мы можем ожидать от этих различий - то есть, что работает по-разному при сравнении Django, например, с Ruby on Rails?
Ответы:
Согласно книге Django , Django следует шаблону MVC достаточно близко, чтобы его можно было назвать фреймворком MVC.
Django называют фреймворком MTV, потому что контроллер обрабатывается самим фреймворком, и большая часть ажиотажа возникает в моделях, шаблонах и представлениях.
Вы можете узнать больше о MTV / MVC здесь:
Если вы знакомы с другими средами веб-разработки MVC, такими как Ruby on Rails, вы можете рассматривать представления Django как контроллеры, а шаблоны Django - как представления .
Это досадная путаница, вызванная разными интерпретациями MVC.
В интерпретации MVC Django представление описывает данные, которые представляются пользователю; Дело не только в том, как данные выглядят, а в том, какие данные представлены.
Напротив, Ruby on Rails и подобные фреймворки предполагают, что задача контроллера включает в себя решение, какие данные будут представлены пользователю, тогда как представление строго соответствует тому, как данные выглядят, а не какие данные представлены.
Сама по себе Django FAQ - хорошее место для начала:
В нашей интерпретации MVC «представление» описывает данные, которые представляются пользователю. Дело не в том, как выглядят данные, а в том, какие данные представлены. Представление описывает, какие данные вы видите, а не то, как вы их видите. Это тонкое различие.
...
Кроме того, разумно отделить контент от представления - здесь и появляются шаблоны. В Django «представление» описывает, какие данные представлены, но представление обычно делегируется шаблону, который описывает, как данные представлены.
Где же тогда «контроллер»? В случае Django, вероятно, это сама структура: машина, которая отправляет запрос в соответствующее представление в соответствии с конфигурацией URL-адреса Django.
Если вам не хватает аббревиатур, можно сказать, что Django - это фреймворк MTV, то есть «модель», «шаблон» и «представление». В этой разбивке гораздо больше смысла.
Помните, что «Контроллер представления модели» - это просто шаблон, то есть попытка описать общую архитектуру. Так что лучший вопрос может быть: «Насколько хорошо Django соответствует шаблону Model View Controller?»
Когда вы пишете код, не думая о названиях частей фреймворка, между ними нет никаких подозрительных различий, например RoR. Но это зависит от вашего использования models
, поскольку в Django они легко содержат некоторую логику, которая в других фреймворках останется на уровне контроллера.
В view
Django обычно представляет собой набор запросов для получения данных и передачи их в шаблон.
views
в Django - это что-то вроде controller
MVC, а template
в Django, скорее, aviews
В mvt запрос к URL-адресу отправляется в представление. Это представление вызывает модель, выполняет манипуляции и подготавливает данные для вывода. Данные передаются в шаблон, который отображается в качестве ответа. в идеале в веб-фреймворках контроллер скрыт от глаз.
В этом отличие от MVC: в mvc пользователь взаимодействует с графическим интерфейсом пользователя, контроллер обрабатывает запрос и уведомляет модель, а представление запрашивает модель, чтобы отобразить результат пользователю.