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

1

7

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

Anagnos answered 31/3, 2010 at 15:19 Comment(0)
R
11

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
Rabbinical answered 31/3, 2010 at 16:1 Comment(1)
I'm having some trouble finding some examples. Can you tell me how I would set the global variable? :DAnagnos

© 2022 - 2024 — McMap. All rights reserved.