字符串模板生成Jinja2模板

时间:2018-11-22 01:44:42

标签: python jinja2 code-generation

我想生成代表XML文档的jinja2模板。 我列出了一堆可能的标签,最终模板如下所示:

from jinja2 import Template

template = Template("""
<root>
{%- tag1 %}<tag1>{{ tag1 }}</tag1>{% endif %}
{%- tag2 %}<tag2>{{ tag2 }}</tag2>{% endif %}
</root>
""")

template.render(**{'tag1':'value1'})

以上代码将生成下一个文档:

<root>
<tag1>value1</tag1>
</root>

现在,我有一个标签列表tags_for_template = [f'tag{i}' for in in range(N)],想要生成上面的模板。

最后,我希望生成器代码可读。

到目前为止,这是我最好的解决方案:

"\n".join(map(lambda x: "{%- if "+x+" %}<"+x+">{{ "+x+" }}</"+x+">{% endif %}", 
    tags_for_template))

您能提出一些更具可读性的建议吗?

0 个答案:

没有答案