2010-03-31 12 views
7

Używam mikroprogramu Bottle w Google App Engine. Używam Jinja2 do moich szablonów. I używam Beaker do obsługi sesji. Nadal jestem całkiem dużym nowicjuszem w Pythonie i jestem bardzo podekscytowany, że dotarłem tak daleko :) Moje pytanie brzmi: jak uzyskać dostęp do danych sesji w szablonach? Mogę uzyskać dane sesji bez problemu w ramach rzeczywistego kodu Pythona. Mogę przekazać dane sesji za każdym razem, gdy nazywam szablon jinja. Ale ponieważ potrzebuję danych sesji w głównym pasku menu witryny ... to znaczy, że będę musiał przekazać to na każdej stronie. Czy ktoś wie, czy mogę uzyskać do niego dostęp bezpośrednio w szablonach?Jak uzyskać dostęp do danych sesji w szablonach Jinja2 (struktura butelek na silniku aplikacji)?

Na przykład muszę dane sesji dla moich linków nagłówka:

Strona główna | FAQ | Zaloguj się

lub

Strona główna | FAQ | Wylogowanie

Każda pomoc jest bardzo doceniana! : D

+0

zaktualizowałem moją odpowiedź. –

Odpowiedz

11

Można dodać rzeczy do Jinja2 environment globals jeśli chcesz, żeby mieć dostęp do wszystkich szablonów. Aby uzyskać dodatkowe informacje, patrz this page.

Aktualizacja:

Prostym przykładem jest na kodzie konfiguracji:

from jinja2 import Environment, PackageLoader 
env = Environment(loader=PackageLoader('yourapplication', 'templates')) 

Następnie, żądanie kodu obsługi:

env.globals['session'] = session # Your session 
# Your template can contain things like {{ session['key'] }} 
template = env.get_template('mytemplate.html') 
print template.render(the='variables', go='here') 
#return response using rendered data 
+1

Mam problem ze znalezieniem przykładów. Czy możesz mi powiedzieć, jak ustawić zmienną globalną? : D – TylerW

+0

Awesome! Wielkie dzięki. – TylerW

Powiązane problemy