Django組み込みミドルウェアのデフォルトリスト
-
10-07-2019 - |
質問
Djangoには組み込みミドルウェアのリストが付属していますが、それらのすべて(またはほとんど)を使用する場合は、settings.pyファイルで適切な並べ替えを行うために、大量のドキュメントを処理する必要があります。
組み込みのDjango 1.1ミドルウェアクラスの all に最適なデフォルトの順序はありますか?つまり、settings.pyにコピーアンドペーストするもの:
MIDDLEWARE_CLASSES = (
# perfect order here please ;-)
)
別の回答:可能な順序は複数あり、違いは何ですか?
ところで: の順序は重要ですが、AuthenticationMiddlewareの前のSessionMiddlewareなど、デフォルトの依存関係の一部しか認識していません。
解決
これらにはデフォルトリストがありますコアDjangoミドルウェア:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
)
作成またはサードパーティから取得した他のものは、上記のタプルの最後に追加できます。 Djangoの書籍では、ビューリクエストでの順序は CommonMiddleware
から AuthenticationMiddleware
であり、最後にビューになっていることにも言及しています。応答を返すと、順序は AuthenticationMiddleware
から CommonMiddleware
に逆になります。以下に doc を示します。
コメントへの応答:
Djangoチケットを精査した後、これはDjango開発者コミュニティの既知の問題であり、最終的な答えはまだないと思われます。以下に、 ticket を示します。これには、ディスカッションとJacobが終了した部分が含まれています。公式の開発者からの応答を得るために、その問題をDjangoチケットとして再度持ち込むことができます。