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

Flask报错‘Template not found’但已存在templates文件夹求助

Flask中Templates存在却报“Template not found”的解决方案

我是编程新手,使用Flask时遇到明明存在templates文件夹却报‘Template not found’的错误,尝试过导入os设置绝对路径、修改render_template路径、调整目录结构等方法,均未解决问题。

相关代码

views.py

from flask import Blueprint
from flask import render_template
from flask import Flask

app=Flask(__name__)

views = Blueprint('views', __name__) # importing this

@views.route('/') # whenever the web is loaded with '/'
def home() : # this function will run
    return render_template('base.html')

init.py

from flask import Flask 

def create_app() :
    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'eung'

    from .views import views #import line 3 from views.py
    from .auth import auth #import line 3 from auth.py

    app.register_blueprint(views, url_prefix='/') #every route call from views.py will need to have a prefix of /
    app.register_blueprint(auth, url_prefix='/') #every route call from auth.py will need to have a prefix of /
    return app 

main.py

from website import create_app

app = create_app()

if __name__ == '__main__':
    app.run(debug=True)

问题排查与解决方案

1. 移除views.py中多余的Flask实例

你的代码在views.py里额外创建了一个Flask实例app=Flask(__name__),这会干扰工厂模式下的模板路径查找逻辑,直接删除这一行即可。修改后的views.py如下:

from flask import Blueprint
from flask import render_template

views = Blueprint('views', __name__)

@views.route('/')
def home():
    return render_template('base.html')

2. 确认目录结构正确性

确保你的项目目录结构符合Flask工厂模式的规范,templates文件夹必须和__init__.py同级,位于website目录下,正确结构如下:

你的项目根目录/
├── main.py
└── website/
    ├── __init__.py
    ├── views.py
    ├── auth.py
    └── templates/
        └── base.html

如果templates放在项目根目录下,Flask会无法识别,必须调整到website目录内。

3. 验证模板查找路径(可选)

如果上述操作后仍有问题,可以在create_app函数中添加打印代码,确认Flask的模板查找路径是否正确:

def create_app():
    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'eung'
    
    # 打印模板路径用于调试
    print("当前模板目录:", app.template_folder)
    print("所有模板查找路径:", app.jinja_loader.searchpath)
    
    from .views import views
    from .auth import auth
    
    app.register_blueprint(views, url_prefix='/')
    app.register_blueprint(auth, url_prefix='/')
    return app

运行main.py后,查看控制台输出的路径是否包含你templates文件夹的绝对路径,如果不包含,说明目录结构仍有问题,需再次调整。

内容的提问来源于stack exchange,提问作者Seung Hwan Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 22:13:36