19

だから私は少しの間djangoをいじっていて、このフレームワークが本当に好きです。ただし、実際に「隠れて」どのように機能するかをよりよく理解したいと思います。

これが私の現在のclient-server-djangoの世界観です.

  1. ブラウザは、HTTP リクエストをサーバーに送信します。
  2. サーバーはその魔法を実行し、CGI を介して要求を django にダンプします (?)
  3. django の一部 (どれ?) がリクエストを受け取り、それを django リクエスト オブジェクトに変換します。
  4. リクエストオブジェクトは、奇妙なことをするミドルウェアを介していくつかのあいまいなパスをさまよっています。
  5. リクエスト オブジェクトは最終的に、URL を調べて urls.py からパターンを取得し、ビュー関数を呼び出す何らかの関数 (どれ?) で終了します。
  6. ビュー関数は魔法のように機能します (モデルとテンプレートを副次的なパートナーとして使用します)。これはおそらく、私が理解している最も強い幻想を持っている場所です (まあ、データベースの抽象化の魔法は別として、つまり... ;)
  7. ビュー関数は HttpResponse オブジェクトを返します。これは、CGI へのあいまいなパスで返されると思います。
  8. Web サーバーが再び引き継ぎ、HTTP 応答をクライアントに送信します。

わかりました、それで、あなたが尋ねる私の質問は一体何ですか? さて、これは実際にどのように機能するのでしょうか? あなたが私にすべてをスプーンで食べさせるとは思っていません...答えは最終的に「ソースを読んでください、ルーク」になると思いますが、

  1. あなたは私のグロスの誤解を解くことができます
  2. どこから始めればいいですか?私がやりたいことは、デバッガーをつかみ、プロセスを数回実行することですが、どこから始めればよいかわかりません
  3. これをうまく説明しているドキュメントを教えてください...はい、このグーグルのことは聞いたことがありますが、本当に役立つものは何も見つかりませんでした。

どうもありがとうポール

4

2 に答える 2

13

あなたの最初の誤解は、これには CGI が関係しているということです。非常にまれでほとんど使用されていないサーバー構成を除いて、そうではありません。

ほとんどの場合、Django は、Web サーバーが Web アプリケーションと通信するための Python 仕様である WSGI を介してサーバーとやり取りします。詳細については、WSGI Web サイトを参照してください。

それとは別に、リクエスト/レスポンス サイクル全体については、James Bennettのブログ エントリ (こちら) で非常に詳しく説明されています。かなり古いですが、書かれてからそのレベルの Django はほとんど変わっていません。

于 2010-11-24T15:24:43.207 に答える
10

Pycon 2015の James Bennett のDjango in Depthチュートリアルをご覧ください。

Pyconの Web サイトから、James の講演の要約を以下に示します。

Django に関するほとんどの本、チュートリアル、およびその他のドキュメントは、そのコンポーネントと API に対して高レベルのアプローチを採用しているため、フレームワークの表面をかじっただけです。ただし、このチュートリアルでは、ORM の根幹からテンプレート システムの内部、管理インターフェイスが実際にどのように機能するかまで、すべてをカバーして内部を詳細に見ていきます。

あなたが初心者であろうと、最も熟練したアプリケーション開発者であろうと、Django のより深い知識と、独自のアプリケーションで使用できる多くの新しいヒントとコツを習得できます。

于 2010-11-24T15:49:37.983 に答える