Контроллер Django против Model View

Может кто-нибудь объяснить мне, где различия между Django и шаблоном Control Model Model?

Функционально, что мы можем ожидать от этих различий - то есть, что по-разному сравнивает Django с, например, Ruby on Rails?

Ответ 1

В соответствии с Django Book Django следует шаблону MVC достаточно близко, чтобы называться MVC-каркасом.

Django упоминается как структура MTV, потому что контроллер обрабатывается самой каркас, и большая часть волнения происходит в моделях, шаблонах и представлениях.

Вы можете узнать больше о MTV/MVC здесь:

Шаблон разработки MTV (или MVC)

Если вы знакомы с другими MVC Рамки веб-разработки, такие как Ruby on Rails, вы можете рассмотреть Django взгляды, которые будут контроллерами и Шаблоны Django являются представлениями.

Это неудачная путаница вызванных различными интерпретации MVC.

В интерпретации Djangos MVC вид описывает данные, которые представлены пользователю; это не обязательно как выглядят данные, но какие данные представлены.

В отличие от Ruby on Rails и аналогичные рамки предполагают, что задача диспетчеров включает в себя решение какие данные передаются пользователю, в то время как данные, а не данные представлены.

Ответ 2

Часто задаваемые вопросы по Django - хорошее место для начала:

В нашей интерпретации MVC "представление" описывает данные, которые представляются пользователю. Не обязательно, как данные выглядят, но какие данные представлены. Представление описывает, какие данные вы видите, а не то, как вы это видите. Это тонкое различие.

...

Кроме того, целесообразно отделить контент от представления - вот где появляются шаблоны. В Django "представление" описывает, какие данные представлены, но представление обычно делегируется шаблону, который описывает способ представления данных.

Где же тогда "контроллер"? В случае Djangos, вероятно, это сама структура: механизм, который отправляет запрос в соответствующее представление, в соответствии с конфигурацией URL Django.

Если вы жаждете сокращений, вы можете сказать, что Django - это фреймворк "MTV", то есть "модель", "шаблон" и "представление". Это расстройство имеет гораздо больше смысла.

Помните, что "Model View Controller" - это просто шаблон, то есть попытка описать общую архитектуру. Поэтому лучше задать вопрос: "Насколько хорошо Django соответствует шаблону Model View Controller?"

Ответ 3

Когда вы кодируете, не думая о названиях фреймворков, нет никаких существенных различий между ними, например RoR. Но это зависит от того, как вы используете models, поскольку на Django они легко содержат некоторую логику, которая на других платформах оставалась бы на уровне контроллера.

view на Django имеет тенденцию быть набором запросов для извлечения данных и передает их в шаблон.

Ответ 4

В mvt запрос на URL-адрес отправляется в представление. Этот View вызывает модель, выполняет манипуляции и подготавливает данные для вывода. Данные передаются в Шаблон, который визуализируется как ответ. в идеале в веб-фреймворках контроллер скрыт от просмотра.

Здесь разница заключается в MVC: в mvc пользователь взаимодействует с gui, контроллер обрабатывает запрос и уведомляет модель, и представление запрашивает модель для отображения результата пользователю.