渲染在 Python 变量中定义的 jinja2 模板
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”的作用域与主脚本不同?
您只需将它们作为主模板渲染的参数传递,因此,在您的情况下,在您的 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.
我正在使用 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”的作用域与主脚本不同?
您只需将它们作为主模板渲染的参数传递,因此,在您的情况下,在您的 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.