400 8949 560

NEWS/新闻

分享你我感悟

您当前位置> 主页 > 新闻 > 技术开发

Flask 模板中 if 语句语法错误的修复方法

发表时间:2026-01-14 00:00:00

文章作者:碧海醫心

浏览次数:

flask 的 jinja2 模板语法中,`{% if ... %}` 标签末尾**不能加冒号(:)**,否则会导致模板渲染失败;正确写法是省略冒号,仅用 `{% if condition %}` 开始条件块。

在你提供的代码中,HTML 模板里的条件判断写成了:

{% if username == "Ana de Armas": %}

这行代码存在语法错误:Jinja2 不接受 if 标签后跟冒号(:),该符号是 Python 代码中的语法,而 Jinja2 模板标签使用 {% ... %} 包裹,其内部是类 Python 表达式,但标签本身不遵循 Python 缩进或冒号规则

✅ 正确写法应为:

{% if username == "Ana de Armas" %}
    

Hello my love

{% else %}

Hello {{ username }}

{% endif %}

注意:

  • {% if ... %} 和 {% endif %} 均无冒号
  • {{ username }} 插值语法保持不变,用于安全渲染变量;
  • 条件支持 ==、!=、is defined、is none 等常用判断,也支持链式逻辑(如 and/or/not)。

此外,你的 Flask 启动代码中存在一个潜在问题:

if __name__ == '__main__':
    hello_world()  # ❌ 错误:这不是启动服务器的正确方式

这行代码会直接调用视图函数,但并未运行 Flask 开发服务器,导致路由不可访问。应改为:

if __name__ == '__main__':
    app.run(debug=True)  # ✅ 正确:启动本地开发服务器

完整修正后的 Flask 文件示例:

from flask import Flask, render_template

app = Flask(__

name__, template_folder="template") @app.route("/") @app.route("/index") def hello_world(): name = "Ana de Armas" return render_template('index.html', title='wekcine', username=name) if __name__ == '__main__': app.run(debug=True)

? 小结:

  • Jinja2 模板中所有 {% ... %} 标签(如 if、for、block)结尾都不加冒号
  • 冒号仅出现在 Python 脚本中(如 if x == y:),切勿混淆;
  • 启动 Flask 应用务必调用 app.run(),而非直接执行视图函数;
  • 开启 debug=True 可获得更友好的错误提示,便于快速定位模板语法问题。

相关案例查看更多