質問

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チケットとして再度持ち込むことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top