1

Cookie を消去してこのビューを実行すると、ページが読み込まれるたびに新しいセッション キーが取得されます。

印刷をコメントアウトし、テンプレートにセッションキーを出力すると、新しいセッションキーがそれぞれ読み込まれます。

ビューとテンプレートの両方でセッション キーを印刷すると、セッション キーは「保存」され、ページが読み込まれるたびに同じままになります。

def view_session(request):
    print request.session.session_key
    return render(request, "view_session.html", {})

では、この動作をどのように説明すればよいでしょうか。

ビューで2回印刷しても新しいキーを取得できるため、2回の読み取りだけではありません。

4

1 に答える 1

3

デフォルトでは、Django はセッションが変更された場合 (つまり、辞書の値のいずれかが割り当てられているか削除されている場合) にのみセッション データベースに保存します。

このデフォルトの動作を変更するには、SESSION_SAVE_EVERY_REQUEST 設定を True に設定します。True に設定すると、Django はリクエストごとにセッションをデータベースに保存します。

セッション Cookie は、セッションが作成または変更された場合にのみ送信されることに注意してください。SESSION_SAVE_EVERY_REQUEST が True の場合、すべてのリクエストでセッション Cookie が送信されます。

セッションが保存されたときから。

于 2012-03-18T12:58:46.680 に答える