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

Flask使用Jinja引入static目录HTML文件遇TemplateNotFound错误求解决

解决Jinja2 TemplateNotFound: /static/myfile.html错误

看起来你遇到了Flask中Jinja模板包含的路径问题,我来帮你梳理下原因和解决办法:

错误原因

Flask默认配置下,Jinja2的模板搜索目录只有项目根目录下的templates文件夹,而static目录是用来存放静态资源(比如CSS、JS、图片)的,Jinja不会自动去这里查找模板文件,所以当你写{% include '/static/myfile.html' %}时,Jinja找不到这个文件就会抛出TemplateNotFound错误。

解决方案

方案1:遵循Flask目录规范(推荐)

把你的myfile.html从static目录移动到templates目录下(如果没有templates文件夹就新建一个,和你的Flask主脚本同级),然后修改sample1.html中的include语句:

{% include 'myfile.html' %}

如果你的模板有分类需求,可以在templates里建子文件夹(比如templates/includes),把myfile.html放进去,然后写成:

{% include 'includes/myfile.html' %}

方案2:将static目录添加到Jinja搜索路径(不推荐,仅特殊场景使用)

如果你因为某些原因必须把模板放在static目录下,可以在Flask初始化时,把static目录添加到Jinja的搜索路径中:

from flask import Flask

app = Flask(__name__)
# 把static目录加入Jinja模板搜索路径
app.jinja_loader.searchpath.append(app.static_folder)

@app.route('/sample')
def sample():
    return render_template('sample1.html')

然后修改sample1.html中的include语句,去掉前面的/static/:

{% include 'myfile.html' %}

⚠️ 注意:这种做法不推荐,因为static目录的设计初衷是存放无需模板渲染的静态资源,把模板放这里会混淆目录职责,不利于项目长期维护。

额外检查点

  • 确认myfile.html的文件名拼写正确,注意大小写(Linux/macOS系统对文件名大小写敏感)
  • 确认文件确实存在于你指定的目录中,没有放错位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:42:34