Jinja模板,导入缺少的忽略项,或检查路径是否存在

时间:2019-02-28 15:55:03

标签: python jinja2

在循环中,我想根据文件在指定路径上是否存在的条件,有条件地导入或包含片段。

导入

使用import的此解决方案将为那些服务抛出异常(TemplateNotFound),该服务在指定路径上没有相应的文件:

{% for service in services %}
{% import "common-topology/master/"+ service + ".json.j2" as fragment %}
{{ "," if fragment and not loop.last }}
{% endfor %}

如果ignore missing以与import相同的方式与include一起工作,那就太好了。

包含

此解决方案将为那些没有相应文件的服务提供额外的逗号:

{% for service in services %}
{% include "common-topology/master/"+ service + ".json.j2" ignore missing %}
{{ "," if not loop.last }}
{% endfor %}

如果我能够检查if语句中是否存在路径,那么这将是include的可行解决方案。

解决这个问题的一种优雅方法是什么?

0 个答案:

没有答案