Jinja2 рендер шаблон - игнорировать поля, для которых нет значения - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть default.yaml, который имеет некоторые свойства, такие как:

app_conf:
   port: 443
   ping_port: 444

У меня есть application.conf, который выглядит следующим образом:

...
master_port "{{ app_conf.port }}";
pingcheck_port "{{ app_conf.ping_port }}";
...

Я использую приведенный ниже код Python длязамените поля в application.conf полями в default.yaml

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??

1 Ответ

0 голосов
/ 26 сентября 2019

Я бы использовал, если, еще и необработанные блоки

{% 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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...