4

私はいくつかのビューを持っていますが、それらはすべてうまく機能し、コア HTML、ヘッダー、フッター、ナビゲーションなどを出力する 1 つの基本テンプレートを拡張するテンプレートを使用しています。幸せな家族。

今、私はページ上のセッションで遊んでみたいと思っています。ビューから実際に渡さないと、テンプレートからユーザーのセッション情報にアクセスできないため (間違っているところを修正してください)、2 つのオプションがあります。

  1. ビューの HTML テンプレートにコンテキストとして渡す残りのビットにセッション データを追加します (これが良い方法かどうかはわかりません)。

  2. 処理中のテンプレートに常にコンテキストをプッシュするビューから既存のすべてのビューを何らかの方法で継承します。このようにして、将来自分のページに追加したいものについて心配する必要はありません。これは可能ですか?

私はdjangoに非常に慣れていないので、これを行う他の適切な方法があるかもしれません-あなたの提案はすべて大歓迎です。

4

1 に答える 1

7

コンテキスト プロセッサを追加することは、これを行うための非常に簡単な方法だと思います。

独自に作成するか、次のものを使用できます: DJANGO.CORE.CONTEXT_PROCESSORS.REQUEST

http://docs.djangoproject.com/en/dev/ref/templates/api/#django-core-context-processors-request

次に、テンプレートにリクエストがあり、request.session でセッションにアクセスできます。

ただし、そうする場合は、次のように、ビューで RequestContext をテンプレートに渡すようにしてください。

from django.template import RequestContext
def some_view(request):
    # ...
    return render_to_response('my_template.html',
                          my_data_dictionary,
                          context_instance=RequestContext(request))

また、settings.py を変更して、コンテキスト プロセッサを追加します。

TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
    "django.core.context_processors.request",
)
于 2011-03-12T23:42:22.963 に答える