Я пытаюсь вывести шаблон, используя jinja2. У меня есть переменная, которая содержит список списков. Мне нужно перебрать списки. Но я не получаю вывод, который я ожидал
Переменные:
"disk_checks": [
{
"excluded_disks": [
"/dev/loop0",
"/dev/loop1"
],
"excluded_filesystems": [
"tmpfs",
"data"
]
}
]
}
Мой шаблон jinja:
{% for setting in disk_checks %}
{% if 'excluded_filesystems' in setting %}
file_system_blacklist:
{% for filesystem in setting %}
- {{ filesystem }}
{% endfor %}
{% endif %}
{% if 'excluded_disks' in setting %}
device_blacklist:
{% for device in setting %}
- {{ device }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% endblock %}
Вывод, который я ожидал:
file_system_blacklist:
- tmpfs
- data
device_blacklist:
- /dev/loop0
- /dev/loop1
Вместо этого я получаю:
file_system_blacklist:
- excluded_filesystems
device_blacklist:
- excluded_disks
Если я печатаю только переменную {{ setting }}
, я вижу список, который пытаюсь циклически изменить. Но второе для l oop не дает ожидаемого выхода.
РЕДАКТИРОВАТЬ:
Я получил это работает, но я чувствую, что я слишком усложняю это. Используя те же переменные, я перебираю список, затем словарь и снова список. Я пытаюсь понять, смогу ли я сделать это более элегантно
{% if disk_checks is defined %}
- use_mount: no
{% for setting in disk_checks %}
{% if 'excluded_filesystems' in setting %}
file_system_blacklist:
{% for x, filesystems in setting.items() %}
{% for filesystem in filesystems %}
- {{ filesystem }}
{% endfor %}
{% endfor %}
{% endif %}
{% if 'excluded_disks' in setting %}
device_blacklist:
{% for y, devices in setting.items() %}
{% for device in devices %}
- {{ device }}
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}