AHB*_*AHB 3 python jinja2 python-2.7
我使用jinja2生成json模板。json 模板已按预期生成。但是,如何使某些参数可选。例如,在下面的模板中sam, uri_2 and uri_3是可选的。当我不在 中传递它们的值时template.render,我不希望在模板中返回这些参数。目前,这些参数返回空值。
from jinja2 import Template
template = Template('''
{
"start": "{{start}}",
"end": "{{end}}",
"sam": "{{sam}}",
"res": "{{res}}",
"uris":
[
"{{uri_1}}",
"{{uri_2}}",
"{{uri_3}}"
]
}
''')
payload = template.render(start=1560009000, end=1560009000, res=3, uri="abc.com")
Run Code Online (Sandbox Code Playgroud)
输出:
{"end": "1540995788", "res": "3", "sam": "", "start": "1540390988", "uris": ["abc.com", "", ""]}
Run Code Online (Sandbox Code Playgroud)
就根本未传递的参数而言(例如sam在您的示例中)
{% if sam %}
"sam" : "{{ sam }}"
{% else %}
{%endif %}
Run Code Online (Sandbox Code Playgroud)
您可能应该将uri值作为列表传递,然后在模板中执行类似以下操作:
"uris":
[
{% for uri in uris %}
"{{ uri }}"
{% endfor %}
]
Run Code Online (Sandbox Code Playgroud)
如果没有uri值并且您没有传递列表,那么render.template您可以"uris"以与 类似的方式完全省略标签sam。