2010-03-31 8 views
7

Estoy ejecutando el micro framework Bottle en Google App Engine. Estoy usando Jinja2 para mis plantillas. Y estoy usando Beaker para manejar las sesiones. Todavía soy un novato de Python bastante grande y estoy muy feliz de haber llegado hasta aquí :) Mi pregunta es ¿cómo puedo acceder a los datos de la sesión dentro de las plantillas? Puedo obtener los datos de la sesión sin problemas dentro del código python real. Y podría pasar los datos de la sesión cada vez que llamo a una plantilla jinja. Pero dado que necesito los datos de la sesión en la barra de menú principal del sitio ... eso significa que tendría que pasarlo en cada página. ¿Alguien sabe si puedo acceder directamente en las plantillas?¿Cómo accedo a los datos de sesión en las plantillas de Jinja2 (marco de botella en el motor de la aplicación)?

Por ejemplo necesito los datos de la sesión para mis enlaces de cabecera:

Inicio | Preguntas frecuentes | Login

o

Inicio | Preguntas frecuentes | Salir

¡Cualquier ayuda es muy apreciada! : D

+0

He actualizado mi respuesta. –

Respuesta

11

Puede agregar cosas a Jinja2 environment globals si desea que todas las plantillas puedan acceder a ellas. Consulte this page para obtener información adicional.

Actualización:

Un ejemplo sencillo es, por su código de configuración:

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

Luego, en su solicitud de código de manejo:

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

Tengo problemas para encontrar algunos ejemplos. ¿Me puede decir cómo establecería la variable global? : D – TylerW

+0

¡Impresionante! Muchas gracias. – TylerW

Cuestiones relacionadas