2011-01-12 11 views
19

Ho cinque pagine con lo stesso layout e struttura della pagina, ma alcuni colori, testi, ecc. Diversi, quindi questo è un ambiente ideale per i template. Ho deciso di usare Jinja2 e probabilmente la fiaschetta. Ho letto la documentazione e alcuni tutorial online, che spiegano molto su cosa è possibile fare con i modelli su una pagina, ma non molto su come inviare variabili alla pagina.Dove memorizzi le variabili in jinja?

  • Dove si memorizzano le variabili specifiche della pagina?
  • Come fa il codice a sapere quale pagina è stata richiesta e quali variabili caricare?
+1

Flask è una buona scelta. E il suo tutorial più o meno risponde alle tue domande: http://flask.pocoo.org/docs/quickstart/#rendering-templates. Nota anche come '@ app.route' definisce l'URL. – 9000

+0

Grazie - quindi dovrei avere uno script python per ogni pagina, dichiarare le variabili all'interno di ogni script python e poi passarle a template.render? –

risposta

48

Ecco l'uso di base:

Innanzitutto creare un modello

>>> from jinja2 import Template 
>>> template = Template('Hello {{ name }}!') 

Poi renderlo passando le variabili

>>> template.render(name='John Doe') 
u'Hello John Doe!' 

Di solito si vuole caricare i modelli da file invece di codice. Questo è più efficiente e ottimizzata, e permette l'ereditarietà dei template:

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

che cercherà i modelli all'interno della cartella templates del pacchetto yourapplication Python, come installato nel percorso di Python. Potresti usare altri caricatori per caricare da un filesystem specifico o anche da altri posti.

Poi si può caricare un modello:

template = env.get_template('mytemplate.html') 
print template.render(the='variables', go='here') 

Quando si utilizza Flask tutto è configurato per voi, quindi si può semplicemente utilizzare la funzione di Flask render_template e sarà già cercare un templates sottocartella della vostra applicazione:

from flask import render_template 

@app.route('/hello/') 
def hello(name=None): 
    return render_template('hello.html', name=name) 

Nota la variabile di modello (nota anche come contesto) viene passata al render_template

Jinja ha un bel good documentation. Per favore leggilo. Sentiti libero di fare ulteriori domande.

1

Edit: Googled interweb in cerca di una risposta e ho trovato alcuni articoli che potrebbero aiutare (abbastanza sicuro che mi hanno aiutato)

http://dbanck.de/2009/01/13/using-jinja2-with-django/

http://www.hindsightlabs.com/blog/2010/03/15/jinja2-and-django-4ever/ (morto)

http://djangosnippets.org/snippets/1061/

+0

Una selezione di collegamenti senza alcuna spiegazione non è utile, -1 da me. – jwbensley

+0

@jwbensley Awww, non utile perché il copia-incolla è disabilitato? Ecco una spiegazione: leggi ...Ma anche il tuo voto negativo è legittimo, perché ero pigro o di fretta (non ricordo quale) – StefanNch

+0

Basta incollare un carico di link che conduce al link putrefazione, che è evidente come hai ora contrassegnato uno di quei link come morti. – jwbensley

Problemi correlati