我有一个default.yaml,它具有一些属性,例如:
app_conf:
port: 443
ping_port: 444
我有一个application.conf,看起来像:
...
master_port "{{ app_conf.port }}";
pingcheck_port "{{ app_conf.ping_port }}";
...
我使用下面的python代码用default.yaml中的字段替换application.conf中的字段
configuration = yaml.load(open('conf/default.yaml'))['app_conf']
template = env.get_template("application.conf")
confReplaceOutput = template.render(app_conf=configuration)
现在,如果{。{app_conf.ping_port}}的值在default.yaml文件中不可用,则呈现的输出为:
pingcheck_port:;
我希望输出为
pingcheck_port "{{ app_conf.ping_port }}";
那么我该如何配置jinja2以忽略对Yaml文件中没有定义的字段的替换?
答案 0 :(得分:0)
我会使用if,else和raw块
{% if app_conf is defined and app_conf.ping_port is defined -%}
pingcheck_port "{{ app_conf.ping_port }}";
{% else %}
{%raw-%}
pingcheck_port "{{ app_conf.ping_port }}";
{%endraw%}
{% endif %}