【发布时间】:2018-05-17 01:04:47
【问题描述】:
假设我有以下 Jinja2 变量:
- 'dev_ami' = 'ami-123456'
- 'dev_located_ami' = 'ami-123456'
- 'prod_ami' = 'ami-654321'
- 'prod_located_ami' = 'ami-654321'
我想在“dev_ami”变量等于“dev_located_ami”变量时设置一个条件。这很容易做到,如以下语句所示:
{% if dev_ami == dev_located_ami %}
... do some stuff
{% else %}
... do some other stuff
{% endif %}
但我想根据列表 ['dev'、'prod' 等...] 中包含的部署环境动态比较 amis。以下包含一个模板错误,因为在这样的语句中存在一个表达式 - {% {{ .. }} %}:
{% for env_type in ['dev','prod'] %}
{% if {{ env_type }}_ami == {{ env_type }}_located_ami %}
... do stuff
{% else %}
... do other stuff
{% endif %}
{% endfor %}
我试图在下面的代码中设置变量来表示我想要的表达式,但不幸的是,它们按字面意思编译为“dev_ami”和“dev_located_ami”,而我希望它们编译为相应的变量值“ami-123456”和“ami-123456”:
{% for env_type in ['dev','prod'] %}
{% set ami = "%s_ami"|format(env_type) %}
{% set located_ami = "%s_located_ami"|format(env_type) %}
{% if ami == located_ami %}
... do stuff
{% else %}
... do other stuff
{% endif %}
{% endfor %}
我已经检查了各种过滤器,但到目前为止都没有成功。希望获得有关使此特定实现正常工作的建议。提前谢谢你。
【问题讨论】: