Django のコンテキスト プロセッサとミドルウェア 質問する

Django のコンテキスト プロセッサとミドルウェア 質問する

コンテキスト プロセッサでできることはすべて、ミドルウェアでもできるように思えます。では、コンテキスト プロセッサの目的は何でしょうか。それらは、ミドルウェアの軽量版なのでしょうか。

ベストアンサー1

ミドルウェアは、低レベルで Django のリクエスト/レスポンス処理へのフックとして機能し、軽量です。フックは、リクエスト、レスポンス、ビュー、template_response、例外処理に使用できます。フックは、ビューが処理する前にリクエストを変更する必要がある場合があります。また、デバッグの目的でリクエストに関する情報をログに記録したり、ローカルを設定するために Cookie をチェックしたりする必要がある場合もあります。

詳しくはこちらミドルウェア

コンテキスト プロセッサはコンテキストを変更するだけです。コンテキストは、テンプレートに渡される変数とのキー値マッピングです。コンテキスト プロセッサは、リクエスト オブジェクトを引数として受け取り、コンテキストにマージされる項目の辞書を返します。コンテキストは、ビューに従ってテンプレートにレンダリングされ、コンテキスト プロセッサがマージするその他の項目が添付されます。これは、すべてのテンプレートで使用できるグローバル コンテキスト変数と考えることができます。

詳しくはこちらコンテキストプロセッサ

どちらも記述がかなり簡単で、目的があります。以下は、ミドルウェアとコンテキストが典型的な Django フローのどこに当てはまるかを示す図です。

ここに画像の説明を入力してください

Django フローチャート

  1. ユーザーがページをリクエストする

  2. リクエストはリクエストミドルウェアに到達し、リクエストを操作したり応答したりする。

  3. URLConfはurls.pyを使用して関連するビューを見つけます

  4. ビューミドルウェアが呼び出され、リクエストを操作したり応答したりできる

  5. ビュー関数が呼び出される

  6. ビューはオプションでモデルを通じてデータにアクセスできる

  7. すべてのモデルとDBのやり取りはマネージャーを介して行われる

  8. ビューは必要に応じて特別なコンテキストを使用できます

  9. コンテキストはレンダリングのためにテンプレートに渡されます

おすすめ記事