5

この問題は、すでにしばらくの間私を悩ませてきました。このトピックについて読んだことがありますが、私の考えを明確にするものは何もないようです。ビューテンプレートとモデルモデルも呼び出すことを理解していますが、コントローラーがどこにあるかはわかりません。djangoがビューと呼ぶものは、コントローラー自体よりもコントローラーのアクション/メソッド/機能のように思えますが、どこを読んでも、ビューコントローラーと同等であると思われます。

以前に MVC フレームワーク (ASP.NET MVC3、Ruby on Rails、PHP Laravel Framework) を使用したことがありますが、それらはすべてコントローラーを同じものとして定義しています。サイトの特定のトピック、つまりユーザー アカウントに関連する一連の関数です。またはそのようなもの。この説明と django の機能との間で私が見つけた最良の同等性はアプリですが、もちろん、膨大な数の人々とドキュメントが逆になっているため、私は間違っています.

誰でもこれで私を助けることができますか?私の考え方に意味はありますか?ここで重要な何かが欠けているので、これらの概念を正しく理解できませんか?

4

7 に答える 7

6

MVC のような設計パターンを破ることのできないルールと考えるのは誤りです。それらは実際にはそうではありません: それらを実装するあらゆる種類の方法があり、多かれ少なかれ説明に準拠しています。

これは、指針となる原則の 1 つが「実用性は純粋性に勝る」、つまり、機能することを行うというPython の場合に特に当てはまります。

いずれにせよ、Django は MVC フレームワークであるとは主張していません。それどころか、ドキュメントではそれをMTV : モデル、テンプレート、ビューと説明しています。結局のところ、デザイン パターンの世界の外では、誰もが「変数とフロー制御の構文を含む HTML ファイル」をビューではなくテンプレートと呼んでいます。

(その FAQ エントリは、あなたの質問に対する可能な答えも提供します。コントローラはフレームワークそのものです。しかし、これらの定義に無理矢理押し込もうとするのは間違いであることを強調し続けます。)

于 2013-09-09T07:36:39.853 に答える
2

用語の不一致は残念ですが、多かれ少なかれ同じことをしています。

于 2015-03-15T18:02:58.483 に答える
1

Django は厳密には MVC ではありません。

この議論は非常に啓発的でした: Django is not MVC

于 2013-12-04T18:37:51.197 に答える
1

誰でもこれで私を助けることができますか?私の考え方に意味はありますか?ここで重要な何かが欠けているので、これらの概念を正しく理解できませんか?

ほぼ全員が何らかのコンセンサスを持っている MVC の唯一の明確に定義された部分は M です。V と C は、さまざまな Web フレームワークではまったく異なる意味を持ち、MVC フレームワークが実際には、すべてのコードを 1 つのスパゲッティ (典型的な従来の PHP コード) にまとめていないことを意味するだけです。MVC はあまり明確に定義された用語ではないことを受け入れる必要がありました。

于 2013-09-09T05:33:44.543 に答える
1

Django FAQを読むことができます。django での MVC の実装方法について説明します。コントローラーに関して、Django の回答は次のとおりです。

では、「コントローラー」はどこに収まるのでしょうか。Django の場合、それはおそらくフレームワークそのものです。つまり、Django の URL 構成に従って、適切なビューにリクエストを送信する機械です。

于 2013-09-09T07:44:24.027 に答える