誰かがDjangoとModel View Controllerパターンの違いを説明してもらえますか?
機能的には、これらの違いから何を期待できますか。つまり、DjangoをRuby on Railsなどと比較すると動作が異なるのは何ですか。
誰かがDjangoとModel View Controllerパターンの違いを説明してもらえますか?
機能的には、これらの違いから何を期待できますか。つまり、DjangoをRuby on Railsなどと比較すると動作が異なるのは何ですか。
回答:
Django Bookによると、DjangoはMVCフレームワークと呼ばれるほど十分にMVCパターンに従っています。
DjangoはMTVフレームワークと呼ばれています。これは、コントローラーがフレームワーク自体によって処理され、興奮のほとんどがモデル、テンプレート、およびビューで発生するためです。
MTV / MVCの詳細については、こちらをご覧ください。
Ruby on Railsなどの他のMVC Web開発フレームワークに精通している場合は、Djangoビューをコントローラーと見なし、Djangoテンプレートをビューと見なすことができます。
これは、MVCの異なる解釈によって引き起こされる不幸な混乱です。
DjangoのMVCの解釈では、ビュー はユーザーに提示されるデータを記述します。データがどのように表示されるかだけでなく、どのデータが表示されるかは異なります。
対照的に、Ruby on Railsや類似のフレームワークは、コントローラーの仕事にはユーザーに提示するデータを決定することが含まれているのに対し、ビューは厳密にはデータがどのように表示されるかではなく、データがどのように表示されるかを示しています。
Django FAQ自体は、まず始めに適切な場所です。
MVCの解釈では、「ビュー」はユーザーに提示されるデータを示します。それは必ずしもデータがどのように見えるかではなく、どのデータが表示されるかです。ビューは、どのように表示するかではなく、どのデータを表示するかを示します。それは微妙な違いです。
...
さらに、コンテンツをプレゼンテーションから分離することは賢明です。これは、テンプレートが入る場所です。Djangoでは、「ビュー」はどのデータが表示されるかを記述しますが、ビューは通常、データの表示方法を記述するテンプレートに委任します。
では、「コントローラ」はどこに収まるのでしょうか。Djangoの場合、それはおそらくフレームワーク自体です。DjangoのURL構成に従って、リクエストを適切なビューに送信するメカニズムです。
頭字語に飢えている場合、Djangoは「MTV」フレームワーク、つまり「モデル」、「テンプレート」、「ビュー」であると言えるでしょう。その内訳はもっと理にかなっています。
「Model View Controller」は単なるパターン、つまり一般的なアーキテクチャを説明する試みであることを覚えておいてください。より良い質問は、「DjangoはどのようにModel View Controllerパターンに適合するか」ということになるかもしれません。
mvtでは、URLへのリクエストがビューにディスパッチされます。このビューはモデルを呼び出し、操作を実行し、データを出力用に準備します。データは、応答として発行されるようにレンダリングされるテンプレートに渡されます。理想的には、Webフレームワークでは、コントローラーは表示されません。
ここがMVCとの違いです。mvcでは、ユーザーがGUIと対話し、コントローラーが要求を処理してモデルに通知し、ビューがモデルにクエリを実行して結果をユーザーに表示します。