Джинджа для l oop вывод неправильных переменных - PullRequest
0 голосов
/ 16 января 2020

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