1

ミドルウェアの順序に関して、この質問は次のように述べています。

SessionMiddleware

  • 以前TransactionMiddleware:ここではトランザクションは必要ありません

トランザクションでセッションの更新を望まないのはなぜですか?ビューで発生した何かの副作用としてセッションが更新され、ビューが失敗した場合でも、失敗していないかのようにセッションを更新したい場合は想像できません。(明らかに、セッションエンジンがデータベースベースでない場合、この問題には別の方法でアプローチする必要があります。)

SessionMiddlewareを外部で実行したい理由を明確に示してくださいTransactionMiddleware

4

1 に答える 1

3

セッションミドルウェアはメッセージミドルウェアによって使用されます。私たちは通常、メッセージミドルウェアをトランザクションから除外したいと思っています。

メッセージミドルウェアページから

セッション(デフォルト)に依存するストレージバックエンドを使用している場合は、「django.contrib.sessions.middleware.SessionMiddleware」を有効にして、MIDDLEWARE_CLASSESのMessageMiddlewareの前に表示する必要があります。

トランザクションの失敗をユーザーメッセージとして表示したい場合があるため、メッセージミドルウェアをトランザクションから除外します。

また、長時間実行されるプロセスでは、通常、メッセージ/セッションを使用してプロセスステータスを更新し続けます。同じことがAjax呼び出しによって取得されます。メッセージまたはセッションMWがトランザクションの後に配置されている場合、ステータスの更新は応答しません。

于 2012-03-12T17:55:11.887 に答える