2012-04-08 11 views
0

私はApp EngineでJinja2とPython 2.7を使用しています。Jinja2テンプレートで変数を永続化するにはどうすればよいですか?

リクエストハンドラでは、すべてのJinja2テンプレートで使用できるように、永続変数Jinja2変数を設定したいと思います。具体的にこれは、ユーザーオブジェクトのためであるので、私はいつも彼らがログインしているときに、サイトのすべてのページに表示するユーザー名を引き出すことができ

私はこの質問を読み、答えています。How do I access session data in Jinja2 templates (Bottle framework on app engine)?

が、ときに私試してみてください。セッション変数は永久的ではないようです。 e。別のテンプレートを参照すると、セッション変数は存在しなくなりました。

永続変数を設定するにはどうすればよいですか?それはユーザーごとに独立して設定されますか?

ありがとうございました!

+0

これはセッションの問題か神社問題かを確認しましたか?セッション関連のコードのエラーは、評判の高いテンプレートエンジンが単に変数を受け入れることができない可能性が高いようです。 – delnan

+0

私が同意すると、私が実際にリンクした答えが本当に働いているかどうかは分かりませんでした。その答えを使用して、今すぐ動作します。私の初期の間違いは、変数が永久に設定されているかどうかをテストするために、変数を設定する要求を実行し、変数を設定している行をコメントアウトし、同じ要求を実行して、これは何らかの理由で機能しません。しかし、1回のリクエストで変数を設定すると、他のJinja2テンプレートで使用できます。 –

答えて

0

すべてのリクエストでJinja環境が作成されると、変数は保存されません。 Webapp2には、セッション、ジンジャー、セービングデータに必要なすべての機能があります。

+0

答えてくれてありがとうvoscausa。私は[webapp2 Sessionsのページ](http://webapp-improved.appspot.com/api/webapp2_extras/sessions.html)を見て、それを動かしました。 リターンself.render_response( 'user_profile.html'、**コンテキスト) ' それぞれの時間I: は、だから、私は 'コンテキスト= {self.current_user 'ユーザー'}のようなものを行う必要があるでしょうと言っていますリクエストを処理しますか? ありがとうございます。 –

+0

私は(私はこれを試していない)webapp2 extra jinjaが環境オブジェクトを保存できるwebapp2と思う。私はまた、この環境オブジェクトにグローバルを追加できると思います。 Jinjaのグローバル名前空間のドキュメントには、「Environment.globals辞書に格納された変数は、インポートされたテンプレートでもコンテキストなしでインポートされていても、特別なものです。 – voscausa

+0

ご協力ありがとうございます。それがうまくいくかどうかを調べるための私のテストは何らかの理由でうまくいかず、上記のコメントを見てください。 –

関連する問題