2012-04-08 4 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)?

하지만 때를 그것을 시도하십시오, 세션 변수가 영구적 인 것, 나는 보이지 않습니다. 이자형. 다른 템플릿을 탐색 할 때 세션 변수가 더 이상 존재하지 않습니다.

어떻게 영구 변수를 설정합니까? 각 사용자별로 독립적으로 설정됩니까?

도움 주셔서 감사합니다.

+0

세션 문제인지 진자인지 확인 했습니까? 세션 관련 코드의 오류가 평판이 좋지 않은 템플릿 엔진이 단순히 변수를 수락 할 수없는 것 같습니다. – delnan

+0

나는 동의한다. 나는 정말로 내가 연계 된 대답이 실제로 작용했는지 확신 할 수 없었다. 그 대답을 사용하여 이제 작동합니다. 이전에 변수가 영구적으로 설정되었는지 테스트하기 위해 변수를 설정하는 요청을 수행 한 다음 변수를 설정하는 줄을 주석 처리하고 동일한 요청을 수행하여 변수를 여전히 사용할 수 있는지 확인했습니다. 어떤 이유로 든 작동하지 않습니다. 그러나 하나의 요청으로 변수를 설정하면 다른 Jinja2 템플릿에서 변수를 사용할 수 있습니다. –

답변

0

모든 요청에 ​​대해 Jinja 환경을 만들면 변수가 저장되지 않습니다. Webapp2는 세션, Jinja 및 저장 데이터에 필요한 모든 기능을 제공합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 [webapp2 세션 페이지] (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

도움 주셔서 감사합니다. 어떤 이유로 작동하지 않는지 테스트 해보고 싶습니다. 위의 설명을 참조하십시오. –

관련 문제