2012-10-21 12 views
6

C'è un modo per farlo con jinja2?Rendering multipli di modelli jinja2?

template = Template("{{ var1 }}{{ var2 }}") 
rendered1 = template.render(var1=5) # "5-{{ var2 }}" 
rendered2 = Template(rendered1).render(var2=6) # "5-6" 

in fondo, voglio essere in grado di fare più passaggi su un modello. Quando il motore del modello trova una variabile nel modello che non è nel contesto, invece di sostituirla con nulla, mantenere intatta la variabile del modello? Se no jinja2, c'è qualche altra libreria di template Python in grado di farlo?

risposta

5

È possibile utilizzare DebugUndefined, che mantiene le ricerche fallite, come Undefined Type per il parametro undefined dell'ambiente Template:

>>> from jinja2 import Template, DebugUndefined 
>>> template = Template("{{ var1 }}-{{ var2 }}", undefined=DebugUndefined) 
>>> rendered1 = template.render(var1=5) # "5-{{ var2 }}" 
>>> print(rendered1) 
5-{{ var2 }} 
>>> rendered2 = Template(rendered1).render(var2=6) # "5-6" 
>>> print(rendered2) 
5-6