[英]Render jinja2 template defined in Python variable
我正在使用 Jinja2 邁出第一步,我了解了大部分概念。
對於一個非常微不足道的案例,我嘗試在另一個塊中渲染子塊。
我的簡單示例:
from jinja2 import Template
# Trivial template examples
otext=Template("""
--- text ---
""")
odate=Template("""
--- date ---
""")
t=Template("""
======== Hello there {{something}} =========
{% if mytype=='T' %}
{# === THE TEXT TEMPLATE SHOULD RENDER HERE === #}
{% else %}
{# === THE DATE TEMPLATE SHOULD RENDER HERE === #}
{% endif %}
We can go and {{dowhat}} today.
""")
mydata={
"something":"JOHN DOE",
"dowhat":"test this",
"mytype" :"T" # choose sub template to run
}
mytest=t.render(mydata)
print(mytest)
在評論所在的位置,我想呈現文本(或日期)模板。 但我似乎無法找到一種方法來使用來自同一個 python 腳本的變量。
完全有可能,還是模板“t”與主腳本不具有相同的 scope?
您只需要將它們作為主模板渲染的 arguments 傳遞,因此,在您的情況下,在您的mydata
字典中:
mydata={
"something":"JOHN DOE",
"dowhat":"test this",
"mytype": "T",
"odate": odate,
"otext": otext
}
然后,您可以在模板中渲染它們:
======== Hello there {{something}} =========
{% if mytype=='T' %}
{{- otext.render() }}
{% else %}
{{- odate.render() }}
{% endif %}
We can go and {{dowhat}} today.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.