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

Flask模板使用extends引入不同文件夹模板的路径设置问题

Flask跨文件夹引入模板的正确配置方法

基础查找规则

Flask的Jinja2模板引擎默认会从模板根目录下查找所有模板文件,默认模板根目录是项目根目录下的templates文件夹,你在{% extends %}中写的所有路径都是相对于模板根目录的相对路径。

问题排查步骤

  • 首先确认目录结构是否符合要求,标准结构示例如下:
项目根目录/
├── app.py(Flask启动文件)
└── templates/  # 模板根目录
    ├── NavigationEG/  # 公共模板文件夹
    │   └── layout.html
    └── 你的业务模板文件夹/
        └── 调用layout的业务模板.html
  • 确认你没有自定义模板根目录,如果你修改过默认配置,需要确保NavigationEG文件夹存放在你指定的模板根目录下,自定义模板根目录的写法如下:
# 实例化Flask时指定template_folder参数
app = Flask(__name__, template_folder='你自定义的模板根目录路径')
  • 如果你使用了蓝图(Blueprint)且蓝图单独配置了template_folder参数,查找路径会优先匹配蓝图的模板目录,这时候需要在路径前加/声明从全局模板根目录查找:
{% extends '/NavigationEG/layout.html' %}

常见报错原因

注意不要把模板根目录本身写入路径,比如{% extends 'templates/NavigationEG/layout.html' %}是错误写法,Flask已经默认从模板根目录开始查找,不需要额外加templates前缀
Linux、macOS系统的文件路径大小写敏感,需要确保你写的NavigationEG和实际文件夹名的大小写完全一致,拼写错误也会导致加载失败

验证方法

你可以添加如下代码打印当前Flask的模板查找路径,确认NavigationEG的父目录在搜索路径列表中:

# 放在Flask实例化代码之后即可
print(app.jinja_loader.searchpath)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:06:02