[英]Using Jinja2 Expression within Jinja2 Statement
假設我有以下Jinja2變量:
我想為'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 %}
我已經檢查了各種過濾器,到目前為止還沒有成功。 希望獲得有關此特定實現正常工作的建議。 先感謝您。
我認為您可能會想到錯誤的數據結構來解決問題。
為了比較不同環境中的amis,動態生成變量名對我來說聽起來像是過大的殺傷力。 您熟悉列表和詞典嗎?
嘗試從這樣的東西(偽代碼)開始:
dict = { environments:
prod:
ami1: foo
ami1_located: foo
dev:
ami1: bar
ami1_located:baz
}
for env in dict[environments]:
if env[ami1] == env[ami1_located]:
[...]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.