2010-03-31 9 views
7

Sto eseguendo il microstruttura Bottle su Google App Engine. Sto usando Jinja2 per i miei modelli. E sto usando Beaker per gestire le sessioni. Sono ancora un grande principiante di Python e sono abbastanza entusiasta di essermi arrivato così lontano :) La mia domanda è: come posso accedere ai dati della sessione all'interno dei modelli? Posso ottenere i dati della sessione senza alcun problema all'interno del codice Python effettivo. E potrei passare i dati della sessione ogni volta che chiamo un modello jinja. Ma dal momento che ho bisogno dei dati di sessione nella barra dei menu principale del sito ... ciò significa che dovrei passarlo su ogni singola pagina. Qualcuno sa se posso accedervi direttamente nei template?Come accedere ai dati della sessione nei modelli Jinja2 (struttura della bottiglia sul motore dell'app)?

Per esempio ho bisogno dei dati di sessione per i miei link di intestazione:

Casa | FAQ | Login

o

Inizio | FAQ | Esci

Qualsiasi aiuto è molto apprezzato! : D

+0

Ho aggiornato la mia risposta. –

risposta

11

È possibile aggiungere elementi a Jinja2 environment globals se si desidera che siano accessibili a tutti i modelli. Vedi this page per ulteriori informazioni.

Aggiornamento:

Un semplice esempio è, per il vostro codice di installazione:

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

Poi, nella richiesta che gestisce il codice:

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

Ho qualche problema nel trovare alcuni esempi. Puoi dirmi come impostare la variabile globale? : D – TylerW

+0

Fantastico! Molte grazie. – TylerW