Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I access session data in Jinja2 templates (Bottle framework on app engine)?

I'm running the micro framework Bottle on Google App Engine. I'm using Jinja2 for my templates. And I'm using Beaker to handle the sessions. I'm still a pretty big Python newbie and am pretty stoked I got this far :) My question is how do I access the session data within the templates? I can get the session data no problem within the actual python code. And I could pass the session data each time I call a jinja template. But since I need the session data in the main menu bar of the site... that means I would have to pass it on every single page. Does anyone know if I can access it directly in the templates?

For example I need the session data for my header links:

Home | FAQ | Login

or

Home | FAQ | Logout

Any help is greatly appreciated! :D

like image 262
TylerW Avatar asked Mar 31 '10 15:03

TylerW


1 Answers

You can add things to the Jinja2 environment globals if you want them to be accessible to all templates. See this page for additional information.

Update:

A simple example is, for your setup code:

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

Then, in your request handling code:

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
like image 70
Vinay Sajip Avatar answered Nov 09 '22 17:11

Vinay Sajip