我已经使用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")
输出:
{"end": "1540995788", "res": "3", "sam": "", "start": "1540390988", "uris": ["abc.com", "", ""]}
答案 0 :(得分:1)
对于完全不传递的参数(例如您的示例中的sam
),然后
{% if sam %}
"sam" : "{{ sam }}"
{% else %}
{%endif %}
您可能应该将uri
值作为列表传递,然后在模板中执行以下操作:
"uris":
[
{% for uri in uris %}
"{{ uri }}"
{% endfor %}
]
如果没有uri
值,并且没有将列表传递给render.template
,则可以完全类似于"uris"
的方式省略sam
标记。 / p>