我尝试思考如何在
Jinja2
文件中使用 YAML
时根据环境变量跳过代码的某些部分。我在网上做了一些研究,询问了 ChatGPT,但我没有找到任何对我有帮助的答案。
所以我做了这个最小的例子:
import os
from jinja2 import Template
os.environ['SKIP']="False"
print(
Template(
"{% if env['SKIP'] %}\n"
'{{ "do not skip" }}\n'
"{% else %}\n"
'{{ "skip" }}\n'
"{% endif %}"
).render(env=os.environ)
)
输出
do not skip
(如预期)。
执行以下操作:
import os
os.environ['SKIP']="True"
print(
Template(
"{% if env['SKIP'] %}\n"
'{{ "do not skip" }}\n'
"{% else %}\n"
'{{ "skip" }}\n'
"{% endif %}"
).render(env=os.environ)
)
也返回
do not skip
,但我期望skip
。所以我认为它没有正确读取环境变量。
非常感谢有关如何正确使用 Jinja2 中的环境变量以及如何修复这个最小示例的任何帮助 - 谢谢!
这里有几个问题 - 我认为你的跳过逻辑是倒退的,你的意图是正确的:
print(
Template(
"{% if env['SKIP'] %}\n"
'{{ "skip" }}\n'
"{% else %}\n"
'{{ "do not skip" }}\n'
"{% endif %}"
).render(env=os.environ)
)
其次,据我所知,在Python中,除了空字符串之外的所有字符串都将计算为真值。所以,举例来说,
if "False":
print('hi')
将输出“hi”。
我相信你想要的是布尔值而不是
"False"
:False