Comment puis-je accéder aux données de session dans les modèles jinja2 (cadre de bouteille sur le moteur de l'application)?
-
23-09-2019 - |
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
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