1. ホーム
  2. django

[解決済み] Django: テンプレート内からセッション変数にアクセスする?

2022-05-09 19:25:21

質問

Djangoでセッション変数を設定する場合、以下のようになります。

request.session["name"] = "name"

テンプレート内からアクセスする方法はありますか?それともビュー内から取得し、テンプレートに渡す必要がありますか?

テンプレート内でアクセスしたい小さなセッション変数が10個ほどあり、ビューからテンプレートに10個すべてを渡すと少し面倒になる可能性があるため、質問させていただきました。

(HttpResponseRedirectなのでセッション変数を使う必要がありますが、変数をデータベースに保存するのは私の目的にはオーバーキルです)。

つまり、テンプレート内で直接セッション変数を取得する方法はないのでしょうか?

どのように解決するのですか?

を追加する必要があります。 django.template.context_processors.request をあなたの テンプレートコンテキストプロセッサー . そして、このようにアクセスすることができます。

{{ request.session.name }}

カスタムビューを使用している場合は、RequestContext のインスタンスを渡していることを確認してください。以下はその例です。 ドキュメント :

from django.shortcuts import render_to_response
from django.template import RequestContext

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

2013年にアップデート。 この回答に対するアップヴォートから判断すると、この回答が最初に書かれてから3年以上たった今でも、人々はこの回答が役に立っていると考えているようです。ただし、上記のビューコードは今でも有効ですが、現在ではもっと簡単な方法があります。 render() と非常によく似た機能です。 render_to_response() しかし、これは RequestContext を明示的に渡す必要はありません。

from django.shortcuts import render

def some_view(request):
    # ...
    return render(request, 'my_template.html', my_data_dictionary)