2012-10-21 42 views
6

Có cách nào để làm điều này với jinja2?Nhiều hiển thị mẫu jinja2?

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

về cơ bản, tôi muốn có thể thực hiện nhiều lần truyền trên mẫu. Khi công cụ mẫu tìm thấy một biến trong mẫu không nằm trong ngữ cảnh, thay vì thay thế nó bằng không có gì, hãy giữ nguyên biến mẫu không? Nếu không phải jinja2, có thư viện mẫu python nào khác có thể làm điều này không?

Trả lời

5

Bạn có thể sử dụng DebugUndefined, mà giữ cho tra cứu thất bại, như Undefined Type của bạn cho undefined tham số của môi trường 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 
Các vấn đề liên quan