Django
のテンプレートでセッションの情報を直接表示する方法を説明していきます。
サンプルのプロジェクトもあるので、そちらの方も確認してみてください。
GitHub - koichi-ezato/mysite
Contribute to koichi-ezato/mysite development by creating an...
まぁ、結論からいくと下記の様にテンプレートでセッションを呼び出せば、セッションをテンプレートで表示可能です。
{{ request.session.session_key }}
「 session_key
」のところは自分で登録したセッション名に修正してください。
setting.py の設定内容確認
まず、セッションを利用可能な状態にするために「 setting.py
」の設定内容を確認します。
「 INSTALLED_APPS
」と「 MIDDLEWARE
」に下記の記述があるか確認します。なければ追加します。
INSTALLED_APPS = [
...
'django.contrib.sessions',
...
]
MIDDLEWARE = [
...
'django.contrib.sessions.middleware.SessionMiddleware',
...
]
views.py でセッションを保存する
今回は polls
アプリケーションの views.py
にある QuestionCreateView
でセッションの保存を行いました。
class QuestionCreateView(generic.CreateView):
form_class = QuestionForm
template_name = 'question/create.html'
def get_context_data(self, **kwargs):
# セッションを追加する
self.request.session['add_session'] = 'セッション追加'
self.request.session['array_session'] = dict(a='配列も', b='セッションに保管できます')
return super(QuestionCreateView, self).get_context_data(**kwargs)
テンプレートにセッションを表示する
下記の様に記述しテンプレートでセッションを表示します。
<p>セッション表示テスト</p>
add_session:{{ request.session.add_session }}<br>
array_session.a:{{ request.session.array_session.a }}<br>
array_session.b:{{ request.session.array_session.b }}
動作確認
http://localhost:8000/polls/create/
にアクセスすると、
画面上にセッションの内容が表示されているのが確認できました!!
参考までに Django
でのセッションの操作方法をメモしておきます。
セッションの操作方法
基本的な操作方法は連想配列の操作とほぼ同じですね。
保存
request.session['session_key'] = var
存在確認
if 'session_key' in request.session:
読み込み
var = request.session['session_key']
削除
del request.session['session_key']
セッションクリア
request.session.clear()
最後に
今回、セッション情報をテンプレートで直接表示したいと思ったのは、別の画面で保存したセッション情報を表示する際に、わざわざ views.py
でセッションを取得してテンプレートに渡す処理を簡略化したかったからです。せっかく一度セッションを保存しているのに、毎回ビュー側でセッションの存在確認や読み込みを行うのは手間になるので、その手間は省くことができたかなと思います。
コメント