0

私のアプリケーションの一部には、訪問者向けのカスタム設定がいくつかあります。ユーザーがページをロードすると、リクエストのカスタム設定を確認しようとし、設定が存在する場合はページでカスタマイズを行います。

私はテンプレートコンテキストプロセッサでそれを行います

def shared_values(request):

    show_help = request.session.get('show_help', True)
    return {
        'show_help': show_help,
    }

それは完璧に機能しますが、問題があります-毎回、セッションdjangoをチェックすると、エントリが前に存在しない場合、セッションテーブルに新しいエントリが作成されます。

新しいセッションを作成せずにセッションを確認するにはどうすればよいですか?

編集1:

次に、セッション キーのチェックを無効にします。django がリクエストのセッション エントリを作成しないことがわかります。

  1. 最初のブラウザ(chrome)で管理者としてログインし、すべてのセッションを削除します(自分用のセッションを除く)
  2. コンテキスト プロセッサを編集して、プロジェクトのセッションにアクセスしないようにします。

    show_help = 真

  3. 別のブラウザー (firefox) でページを開く

  4. 最初のブラウザに切り替えて、新しいセッション オブジェクトが表示されるかどうかを確認しますが、何も変更されていません。存在するセッション オブジェクトは 1 つだけです。

編集2:

私はジャンゴ1.4.1を使用しています

4

1 に答える 1

0

ドキュメント:

SessionMiddlewareアクティブ化されると、各HttpRequestオブジェクト (Django ビュー関数の最初の引数session ) は、辞書のようなオブジェクトである属性を持ちます。

したがって、リクエストを行うたびに、セッションがまだ存在しない場合は作成されます。が適用される場合context_processor- セッションはすでに存在します。そのことについて心配する必要はありません。

于 2012-10-22T13:18:09.970 に答える