Comment puis-je accéder aux données de session dans les modèles jinja2 (cadre de bouteille sur le moteur de l'application)?

StackOverflow https://stackoverflow.com/questions/2554174

Question

Je suis en cours d'exécution le cadre micro Bouteille sur Google App Engine. J'utilise Jinja2 pour mes modèles. Et j'utilise Beaker pour gérer les sessions. Je suis encore un assez grand débutant Python et je suis assez content que je suis loin :) Ma question est de savoir comment puis-je accéder aux données de session dans les modèles? Je peux obtenir les données de session aucun problème dans le code python réel. Et je pourrais transmettre les données de session à chaque fois que j'appelle un modèle de Jinja. Mais depuis que je besoin des données de session dans le menu principal bar du site ... cela signifie que je dois passer sur chaque page. Est-ce que quelqu'un sait si je peux y accéder directement dans les modèles?

Par exemple, je besoin des données de session pour mes liens d'en-tête:

Accueil | FAQ | Connexion

ou

Accueil | FAQ | Déconnexion

Toute aide est grandement appréciée! : D

Était-ce utile?

La solution

Vous pouvez ajouter des choses à les globals environnement de Jinja2 si vous voulez qu'ils soient accessibles à tous les modèles. Voir cette page pour plus d'informations.

Mise à jour:

Un exemple simple est, pour votre code d'installation:

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

Ensuite, dans votre code de traitement de la demande:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top