Jinja2 - Возможно ли иметь строковое значение + переменную во встроенном if / else? - PullRequest
0 голосов
/ 17 января 2020

Я объединяю некоторые строки для создания iso-файла с переменными для версии и обновления. Моя проблема с обновлением, потому что либо существует версия обновления, поэтому файл будет содержать UpdateX, где x - номер обновления, либо это начальная версия, и в названии нет ссылки на обновление.

Пример имен ISO:

  • VMware-ESXi-6.7.0-Update2-HPE.iso
  • VMware-ESXi-6.7.0-Update1-HPE.iso
  • VMware-ESXi-6.7.0-HPE.iso

Итак, с обычным '{% if <cond> %}{% else %}{% endif %}' я знаю, как это сделать:

esxi_iso: "{% if update %}\
             VMware-ESXi-{{ version }}-'Update-{{ update }}-HPE.iso\
           {% else %}\
             VMware-ESXi-{{ version }}-HPE.iso\
           {% endif %}"

Это работает. Но я хочу сохранить это в одной строке. И я не знаю, как предоставить Update-{{ update }} в качестве значения в строке, если…

Конечно, следующая попытка через меня - шаблонная ошибка.

esxi_iso: "VMware-ESXi-{{ version }}-{{ 'Update-{{ update }}' if update else '' }}HPE.iso"

1 Ответ

1 голос
/ 17 января 2020

Встроенный, если в Jinja2 есть что-то еще.

VMware-ESXi-{{ version }}-{{ 'Update-' + update|string if update else '' }}HPE.iso

Или используйте фильтр format.

VMware-ESXi-{{ version }}-{{ 'Update-%s'|format(update) if update else '' }}HPE.iso
...