簡體   English   中英

渲染在 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”與主腳本不具有相同的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM