Python + Django してみた。 MTV Model について


どうも書いてて、 MVC っぽいようで、MVC っぽくないので調べてみると、

FAQ 全般 — Django v1_0 documentation
http://djangoproject.jp/doc/ja/1.0/faq/general.html

ここいはく、 Model – Template – View ということで、 MTV モデルというんだそうな。

MVC モデルでは、

Model : データとデータに対する手続きを記述。
View : Model のデータをユーザが見られるように表示する。UI への出力。
Controller : ユーザの入力に対して応答する。処理が必要なら Model に依頼し、表示が必要なら View に依頼する。

http://ja.wikipedia.org/wiki/Model_View_Controller

という感じなのですが、

Django を MVC として見ようとすると、
個人的に View のロジックと表現技法が分離されていない印象をうけて、
Controller もDjango 全体をさすようにに見えて、どうも本来扱う部分を超えてしまう。

というように私には見えてしまってしょうがない感じだったのです。

 

そこで、
最初に示したページにある、 MTV モデルに合わせて考え直してみると、かなりしっくり来て、

Model : Database に格納してあるデータ、および付随する処理(models.Model より提供)
Template : テンプレートファイルによってデザインされた各ページのデザイン
View : リクエストがあった URI ごとに、どのページを見せるかを記述する処理。

ということで、Django を MVC として見て、脳内に疑問符が浮かんだ方は、
公式ウェブサイトで提唱されている、MTV モデル、つまり、
View を Template そして Controller を View とすることで、
Django の設計思想がモデルとしてばしっと来るのではないでしょうか。


 

関連記事