2010-03-31 12 views
7

J'utilise le micro framework Bottle sur Google App Engine. J'utilise Jinja2 pour mes modèles. Et j'utilise Beaker pour gérer les sessions. Je suis toujours un très bon débutant Python et je suis assez content que je suis arrivé jusqu'ici :) Ma question est comment puis-je accéder aux données de session dans les modèles? Je peux obtenir les données de session sans problème dans le code Python réel. Et je pourrais transmettre les données de la session chaque fois que j'appelle un template jinja. Mais puisque j'ai besoin des données de session dans la barre de menu principale du site ... cela signifie que je devrais le passer sur chaque page. Est-ce que quelqu'un sait si je peux y accéder directement dans les modèles?Comment puis-je accéder aux données de session dans les modèles Jinja2 (cadre Bottle sur le moteur de l'application)?

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

Accueil | FAQ | Login

ou

Accueil | FAQ | Déconnexion

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

+0

Je mis à jour ma réponse. –

Répondre

11

Vous pouvez ajouter des éléments au Jinja2 environment globals si vous souhaitez qu'ils soient accessibles à tous les modèles. Voir this 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 demande de code de gestion:

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

J'ai quelques difficultés à trouver des exemples. Pouvez-vous me dire comment je définirais la variable globale? : D – TylerW

+0

Génial! Merci beaucoup. – TylerW