Jinja2 - 是否可以在内联 if/else 中有一个字符串值 + 一个变量?



我正在连接一些字符串以构建带有版本和更新变量的 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"

如果else 是 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

最新更新