3.4.1.1 逻辑控制与循环 你有没有在深夜调试一个 Jinja2 模板时,盯着一行 发呆,而页面却空着不报错、不渲染、也不崩溃? 有没有把 传进模板前反复 、 ,确认它是个非空列表,结果模板里 依然报 ? 有没有在循环中嵌套三层 ,最后发现逻辑分支像打结的耳机线,改一处,三处崩? 这不是你的错。这是 Jinja2 的「静默宽容」在作祟——它不会替你拦住 ,不会主动告诉你 其实是 而不是空列表,更不会警告你:你在用 Python 的思维写模板,却忘了模板不是 Python 解释器,而是编译期与运行期双重约束的声明式渲染引擎。 今天,我们不讲 和 的语法定义,不罗列所有控制语句。我们要直击一个被 83.