Как удалить нулевые значения из словаря в jinja2 / ansible? - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу отобразить файл json в jinja2 (к сожалению или нет, это нужно сделать только с использованием jinja2).Я считаю, что самый простой способ сделать это - передать dict в фильтр to_json.

{{ content | to_json }}

Я хочу, чтобы содержание dict состояло из ключа, т.е.abc, cde, какие значения передаются в jinja из ansible, поэтому я бы сделал это следующим образом:

{% set content = {'abc' : abc, 'cde' : cde} %}

Некоторые значения могут быть неопределенными, а автономный контент отображается примерно так:

{{ content }}

{'abc': 3, 'cde': Undefined}

Как я могу отфильтровать эти неопределенные значения из словаря содержимого, чтобы to_json мог работать правильно?

Когда я набираю

{{ content | to_json }}

Я получаю

AnsibleError: Произошла непредвиденная ошибка типа шаблона ({% set content = {'bridge_ip': bridge_ip, 'insecure_registries': insecure_registries}%} {{content | to_json}}): Undefined не является JSON-сериализуемым

Редактировать: мне это удается, но мне интересно, есть ли более чистый путь:

{{ content | dict2items| rejectattr("value", "undefined") | list | items2dict | to_json }}
...