私はwebapp2のpythonプロジェクトに取り組んでいます。 jinja2テンプレートのセッション変数にアクセスできる方法はありますか?私は、セッション変数を取得してテンプレートに渡してから使用できることを知っています。しかし、私はハンドラをたくさん持っており、毎回セッション変数をレンダリング関数に渡したくありません。私は、PHPで直接セッションの値をテンプレートでアクセスできるようなものを探しています。どんな助けもありがとう。jinja2でセッション変数にアクセスするか、jinja2でグローバル変数を設定するwebapp2 python
0
A
答えて
3
Jinja2を使用したwebapp2では、webapp2_extras.jinja2.default_config
を使用して、追加のグローバルを渡す必要があるようです。 (あなたは、「ユーザー名」の値を設定すると仮定した場合)
webapp2_extras.jinja2.default_config = {
"globals": {
"session": session
}
}
そしてテンプレートでは、このようなセッション変数にアクセスします。:私は、これは正しい構文だと思う
<p>Welcome {{ session['username'] }}!</p>
注:もしJinja2をテンプレートエンジンとして使用するFlaskを使用すると、セッション変数はstandard contextの一部としてテンプレートに渡されます。
1
またはテンプレートのコンテキストを追加したBaseHandlerを使用します。
class BaseHandler(webapp2.RequestHandler):
""" webapp2 base handler """
def __init__(self, request, response):
self.session_store = None
super(BaseHandler, self).__init__(request, response)
user = users.get_current_user()
# if not users.is_current_user_admin():
if user.email() not in USER_CONFIG:
self.abort(401)
def dispatch(self):
# Get a session store for this request.
self.session_store = sessions.get_store(request=self.request)
if not self.session:
session_data_or_default(self.session)
try:
# Dispatch the request.
webapp2.RequestHandler.dispatch(self)
finally:
self.session['route_name'] = self.request.route.name
# Save all sessions.
self.session_store.save_sessions(self.response)
@webapp2.cached_property
def session(self):
# Returns a session using the default cookie key.
# we use memcache because the amount of data you can store in a secure cookie is limited.
return self.session_store.get_session(name='my-secret-session', backend='memcache')
@webapp2.cached_property
def jinja2(self):
return jinja2.get_jinja2(app=self.app)
def render_template(self, template, **template_args):
template_args['session'] = self.session
template_args['version'] = modules.get_current_version_name()
self.response.write(self.jinja2.render_template(template, **template_args))
def return_rendered(self, template, **template_args):
template_args['session'] = self.session
return self.jinja2.render_template(template, **template_args)
関連する問題
- 1. Jinja2:ローカル/グローバル変数
- 2. JavaスクリプトでJinja2変数に値を設定する方法
- 3. jinja2:htmlエスケープ変数
- 4. Jinja2-Flask変数パーティション
- 5. Jinja2変数の変数
- 6. Jinja2で未定義変数を代入
- 7. webapp2リクエストハンドラからjinja2テンプレートに渡されたテンプレート変数をunittestする方法
- 8. Jinja2のフレーム変数
- 9. bokehのJinja2変数
- 10. @ webapp2.cached_propertyでJinja2インスタンスを飾る理由
- 11. グローバル変数 - パイソン、webapp2を
- 12. Jinja2テンプレート変数を1行に変更
- 13. コンソール出力から変数を保存するJavascipt/Python/Jinja2
- 14. webapp2 + jinja2:jinja2-viewsでuri_for()を使用するにはどうすればいいですか?
- 15. Jinja2変数をX秒ごとに更新する - Python Flask
- 16. Pythonで非グローバル変数にアクセスする
- 17. jinja2で変数にアクセス中にエラーが発生しました
- 18. Jinja2とWebapp2でReactJSを使う
- 19. 変数でのflask jinja2テーブルの生成
- 20. Pythonフラスコjinja2テンプレート変数のコンテキスト。変数をレンダリングできません
- 21. sphinxからjinja2に渡される変数を見つける
- 22. Jinja2でブロック名に変数名を使用しますか?
- 23. コールバックでグローバル変数を設定する
- 24. twitter-bootstrapとjinja2でモーダル変数を共有する方法は?
- 25. Jinja2:ループ内の変数の値を変更する
- 26. jinja2 /フラスコが変数の値を変更する
- 27. 変数と変数が定義されている場合 - Jinja2の
- 28. 可能なjinja2テンプレートから辞書変数にアクセスする方法は?
- 29. mochaでグローバル変数 'before'に変数を設定しますか?
- 30. Pythonで宣言されていない変数をネストする方法jinja2
あなたは私がそれを使用することができますどのようにそれを少し説明していただけますか? –
追加された使用例 – BrettJ
グローバル変数でセッション変数を使用すると、セッション変数にエラーが発生しています。 –