Jinja模板跨文件使用变量及设置默认值问题求助
解决Jinja模板变量引用语法错误及布尔值判断问题
错误原因
你在child1.tpl的if条件中错误地给变量加上了大括号{TEST_VARIABLE},Jinja模板里直接写变量名即可,不需要额外包裹大括号,这是导致unexpected '{' in field name报错的直接原因。
另外需要注意:你的main.tpl中TEST_VARIABLE被设置为字符串"false",而非布尔值false,如果直接和布尔值false比较,结果会不符合预期。
正确实现方式
方式1:保持变量为字符串类型的判断
如果要沿用main.tpl中字符串类型的TEST_VARIABLE,child1.tpl的代码应该写成:
{%- if TEST_VARIABLE == "false" %} PROPERTY1=false {%- else %} PROPERTY1=true {%- endif %}
方式2:改为布尔值变量的判断
如果希望TEST_VARIABLE是布尔类型,先修改main.tpl中的变量定义(去掉引号):
{%- with PREFIX = "test." %} {%- set TEST_VARIABLE = false %} {%- include "child1.tpl" %} {%- endwith %}
对应的child1.tpl代码:
{%- if not TEST_VARIABLE %} PROPERTY1=false {%- else %} PROPERTY1=true {%- endif %}
或者可以用更简洁的写法:
PROPERTY1={{ TEST_VARIABLE | lower }}
(利用Jinja的过滤器,直接将布尔值转为小写字符串)
内容的提问来源于stack exchange,提问作者stillLearning
相关产品推荐
相关产品推荐

