You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的Jinja2代码运行后无法正常渲染HTML页面?

问题根因

Jinja2模板变量未正常渲染,由以下几个常见问题导致:

  • 模板存放路径不符合Flask默认规则:Flask默认只会读取项目根目录下templates文件夹内的文件作为Jinja模板,如果你把html文件放在根目录、其他命名文件夹,又没有手动配置模板路径,Flask不会解析文件里的{{ }}语法,会直接把内容当纯静态文本返回。
  • HTML结构不合法:你把属于正文内容的<h2>标签写在了<head>标签内部,浏览器解析DOM时会自动调整这部分内容的位置,可能引发渲染异常。
  • 路由传参缺失:你写的/about路由调用render_template时没有传入title变量,对应页面的模板变量会被渲染为空值,看不到动态内容。
  • 页面打开方式错误:如果直接双击本地html文件通过file协议打开,请求根本不会经过Flask后端的渲染流程,Jinja语法自然不会被解析替换。
修复方案
  1. 先调整项目目录结构,严格匹配Flask默认的模板查找规则,参考结构如下:
your_project/
├── app.py  # 你的Flask主运行文件
└── templates/  # 文件夹名必须为templates,全小写
    ├── index.html
    └── about.html
  1. 修正模板HTML结构,把正文标签移到<body>内部,修正后的index.html代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ title }}</title>
</head>
<body>
    <h2>{{ title }}</h2>
</body>
</html>
  1. 补全/about路由的参数传递,修改app.py中对应路由的代码:
@app.route('/about')
def about():
    title = 'About'
    return render_template('about.html', title=title)
  1. 启动Flask服务后,通过http://127.0.0.1:5000访问对应路由,不要直接打开本地html文件。如果之前已经启动过服务,先停掉进程重新运行,同时按Ctrl+F5强制刷新浏览器,避免缓存导致修改不生效。

如果完成以上调整还是不生效,检查你是否在Flask初始化时自定义过template_folder参数,如果有自定义配置,需要把模板文件放到你配置的对应路径下。

内容的提问来源于stack exchange,提问作者jerardhinho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 20:01:06