2012-04-04 12 views

答えて

14

コンテキストプロセッサを使用してテンプレートに余分なデータを提供します。ミドルウェアは、要求/応答オブジェクトをインターセプトし、いくつかの意味のある方法でそれらを変更する(または他の動作をトリガーする)ためのものです。

1

異なるコンテキストで異なるレベルのスタックで動作します。そのフレームワークのスタックを絶対に正式なものにするのは通常は難しいが、特にDjango処理のようなWebフレームワークは要求と応答だけである。はい。テンプレートをレンダリングするときに、context_userではなくcontext.userでrequest.userを使用できます。しかし、テンプレートでのみ使用される属性は、すべての要求に設定されることを望まないかもしれません。

また、デコレータはビューレベル操作のためにミドルウェアよりも柔軟性がありますが、ミドルウェアとは言い難いのはデコレータライトです。コンテキスト・プロセッサーを割り当てテンプレート・タグとして扱いたいが、それは自動的にロードされる。

19

ミドルウェアは、Djangoの要求/応答処理を低レベルでフックとして機能し、軽いです。フックは、要求、応答、ビュー、template_response、および例外処理に使用できます。フックは、ビューがそれを処理する前に要求を変更する必要があり、デバッグ目的の要求に関する情報を記録したり、ローカルを設定するためにクッキーをチェックしたりする必要があります。

続きを読むMiddlewareを参照してください。

コンテキストプロセッサはコンテキストを変更するだけです。コンテキストとは、テンプレートに渡される変数とのキー値マッピングです。コンテキストプロセッサは要求オブジェクトを引数として受け取り、コンテキストにマージされる項目の辞書を返します。コンテキストはビューごとにテンプレートにレンダリングされ、コンテキストプロセッサがマージするものはすべて貼り付けられます。すべてのテンプレートで利用可能なグローバルコンテキスト変数と考えることができます。

続きを読むContext Processorsを参照してください。

どちらも非常に書きやすく、目的があります。ここではミドルウェア、コンテキストは、典型的なDjangoの流れの中に収まるところを示した図である。

enter image description here

ジャンゴフローチャート

  1. ユーザーは、ページ

  2. リクエストはリクエストミドルウェアに到達した要求しますリクエストを操作または回答する可能性があります。

  3. URLには関連性がありますURLを使って表示します。PY

  4. ビューミドルウェアは、ビュー機能を

  5. 呼び出され

  6. ビューは、すべてのモデルにモデル

  7. を通じてアクセスデータをオプションで可能性があり、要求を操作したり、答えることができた、と呼ばれています-DBの対話はマネージャー経由で行われる

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

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

関連する問題