誰かがDjangoとModel View Controllerパターンの間の違いがあることを説明できますか?
機能的には、これらの違いから何を期待できますか。つまり、Django=とRailsの場合、Ruby?
Django Book 、Djangoによると、MVCフレームワークと呼ばれるほどMVCパターンに厳密に従っています。
DjangoはMTVフレームワークと呼ばれています。これは、コントローラーがフレームワーク自体によって処理され、ほとんどの興奮がモデル、テンプレート、およびビューで発生するためです。
MTV/MVCの詳細については、こちらをご覧ください。
Ruby on Railsなど)のような他のMVC Web開発フレームワークに精通している場合は、DjangoビューをcontrollersおよびDjangoテンプレートはviews).
これは、MVCの異なる解釈によってもたらされる不幸な混乱です。
DjangoのMVCの解釈では、viewはユーザーに提示されるデータを説明しています。データの見た目だけでなく、どのデータが表示されるかということもあります。
対照的に、Ruby on Railsおよび同様のフレームワークは、コントローラーのジョブがどのデータをユーザーに提示するかを決定することを含むことを示唆しています。表示されるデータではなく、表示されます。
Django FAQ自体は開始するのにふさわしい場所です:
MVCの解釈では、「ビュー」はユーザーに提示されるデータを表します。必ずしもデータがどのように見えるかではなく、どのデータが表示されるかです。このビューは、どのように表示されるかではなく、どのデータが表示されるかを説明します。それは微妙な違いです。
...
さらに、コンテンツをプレゼンテーションから分離するのが賢明です。プレゼンテーションはテンプレートの出番です。Djangoでは、「ビュー」はどのデータが表示されるかを説明しますが、ビューは通常テンプレートに委任されます。
では、「コントローラー」はどこに収まりますか? Djangoの場合、おそらくフレームワーク自体です。Django URL構成に従って、適切なビューにリクエストを送信する機械です。
頭字語に飢えているなら、Djangoは「MTV」フレームワーク、つまり「モデル」、「テンプレート」、「ビュー」であると言うかもしれません。センス。
「Model View Controller」は単なるパターン、つまり一般的なアーキテクチャを説明する試みであることに留意してください。したがって、より良い質問は、「Djangoモデルビューコントローラーパターンにどの程度適合しますか?」
フレームワークのピースの名前を考えずにコーディングする場合、たとえばRoRのように実質的な違いはありません。ただし、Djangoには他のフレームワークではコントローラーレベルにとどまるロジックが簡単に含まれているため、models
の使用方法に依存します。
view
on Django=は、データを取得するためのクエリのセットであり、テンプレートに渡します。
Mvtでは、URLへのリクエストがビューにディスパッチされます。このビューはモデルを呼び出し、操作を実行し、出力用のデータを準備します。データはテンプレートに渡され、応答として出力されます。理想的には、Webフレームワークでは、コントローラーはビューから隠されています。
これがMVCとの違いです。MVCでは、ユーザーがGUIと対話し、コントローラーが要求を処理してモデルに通知し、ビューがモデルにクエリを実行して結果をユーザーに表示します。