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
相关产品推荐
相关产品推荐

