コンテキストプロセッサができることはすべてミドルウェアができそうです。コンテキストプロセッサのポイントは何ですか?彼らはちょうどミドルウェア - ライトですか?コンテキストプロセッサとdjangoのミドルウェア
答えて
コンテキストプロセッサを使用してテンプレートに余分なデータを提供します。ミドルウェアは、要求/応答オブジェクトをインターセプトし、いくつかの意味のある方法でそれらを変更する(または他の動作をトリガーする)ためのものです。
異なるコンテキストで異なるレベルのスタックで動作します。そのフレームワークのスタックを絶対に正式なものにするのは通常は難しいが、特にDjango処理のようなWebフレームワークは要求と応答だけである。はい。テンプレートをレンダリングするときに、context_userではなくcontext.userでrequest.userを使用できます。しかし、テンプレートでのみ使用される属性は、すべての要求に設定されることを望まないかもしれません。
また、デコレータはビューレベル操作のためにミドルウェアよりも柔軟性がありますが、ミドルウェアとは言い難いのはデコレータライトです。コンテキスト・プロセッサーを割り当てテンプレート・タグとして扱いたいが、それは自動的にロードされる。
ミドルウェアは、Djangoの要求/応答処理を低レベルでフックとして機能し、軽いです。フックは、要求、応答、ビュー、template_response、および例外処理に使用できます。フックは、ビューがそれを処理する前に要求を変更する必要があり、デバッグ目的の要求に関する情報を記録したり、ローカルを設定するためにクッキーをチェックしたりする必要があります。
続きを読むMiddlewareを参照してください。
コンテキストプロセッサはコンテキストを変更するだけです。コンテキストとは、テンプレートに渡される変数とのキー値マッピングです。コンテキストプロセッサは要求オブジェクトを引数として受け取り、コンテキストにマージされる項目の辞書を返します。コンテキストはビューごとにテンプレートにレンダリングされ、コンテキストプロセッサがマージするものはすべて貼り付けられます。すべてのテンプレートで利用可能なグローバルコンテキスト変数と考えることができます。
続きを読むContext Processorsを参照してください。
どちらも非常に書きやすく、目的があります。ここではミドルウェア、コンテキストは、典型的なDjangoの流れの中に収まるところを示した図である。
ジャンゴフローチャート
ユーザーは、ページ
リクエストはリクエストミドルウェアに到達した要求しますリクエストを操作または回答する可能性があります。
URLには関連性がありますURLを使って表示します。PY
ビューミドルウェアは、ビュー機能を
呼び出され
ビューは、すべてのモデルにモデル
を通じてアクセスデータをオプションで可能性があり、要求を操作したり、答えることができた、と呼ばれています-DBの対話はマネージャー経由で行われる
ビューは必要に応じて特殊なコンテキストを使用できる
コンテキストはレンダリングのためにテンプレートに渡されます
- 1. Turbogears2:djangoコンテキストプロセッサのアナログ
- 2. django-sortingとdjango-pagination:ミドルウェアの注文
- 3. ユーザー許可を確認するDjangoコンテキストプロセッサ
- 4. djangoミドルウェアとprocess_requestとprocess_viewの違い
- 5. Djangoコンテキストプロセッサはいつ適切に使用できますか?
- 6. コンテキストプロセッサからのデータの「レイジーロード」
- 7. ミドルウェアからモデルにアクセスする - Django
- 8. Djangoモデルを使用したDjangoミドルウェアですか?
- 9. ミドルウェアとしてのPHPプロキシ
- 10. ミドルウェア
- 11. Djangoの "グローバルログイン"ミドルウェアでGETリクエストが重複する
- 12. デコレータをコンテキストプロセッサに適用する
- 13. Django:セッションまたはクッキーをミドルウェアで取得します
- 14. Django process_viewミドルウェア403が禁止されました
- 15. Symfony2ミドルウェア
- 16. Php - ミドルウェア
- 17. ログインと計算のためのAndroidミドルウェア
- 18. フィドラーとオラクルの融合ミドルウェアのフォーム
- 19. ExpressJSミドルウェアの設定
- 20. ミドルウェアのSlim PHPルート
- 21. MVC 6のCookieミドルウェア
- 22. モバイルアプリケーションのミドルウェア設計
- 23. シングルサインオンのためにDjangoミドルウェアの内部でHTTP GETにクッキーを渡す
- 24. ジャンゴ - ミドルウェア問題
- 25. Scrapyミドルウェア順
- 26. 生のクエリー文字列をDjangoミドルウェアで取得できますか?
- 27. コンテキストプロセッサから現在のアプリケーション名を取得する方法は?
- 28. Javaミドルウェア技術とは何ですか?
- 29. Djangoにミドルウェアとビューの間に何かがあるので、自分のコードをプラグインできますか?
- 30. 自分のミドルウェアを作成すると、私のDjangoアプリケーションがクラッシュするのはなぜですか?