Flask error: jinja2.exceptions.TemplateNotFound:

Flask error: jinja2.exceptions.TemplateNotFound:

我有一个 Flask 项目,FlaskUserAuthentication,它有一个同名的包(FlaskUserAuthentication),在那个包下还有两个包,即 APISite。以下是结构-

APISite包下的__init__.py文件都是空的

以下是 FlaskUserAuthentication 主包下 __init__.py 文件的代码,.

from flask import Flask
from API.routes import api
from Site.routes import site

app = Flask(__name__)

app.register_blueprint(api)
app.register_blueprint(site)

并且 run.py 有以下-

from FlaskUserAuthentication import app

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

但是,当我在 运行 服务器后输入 http://127.0.0.1:5000/index 时,出现以下错误-

jinja2.exceptions.TemplateNotFound: index.html

显然我在 Site=>templates=>Site 文件夹下有 index.html 文件。以下是我的Site=>routes.py代码-

from flask import Blueprint, render_template

site = Blueprint('Site', __name__, template_folder='templates') # updated


@site.route('/index')
def index():
    return render_template('index.html')


@site.route('/login')
def login():
    return render_template('login.html')

谁能帮忙。

P.S.: 根据一些建议,我相应地更新了我的解决方案和问题。还是一样的问题。

看来您需要通过设置 template_folder 来公开模板。

site = Blueprint('site', __name__, template_folder='templates')

有关详细信息,请参阅 blueprints docs。特别是您可能需要考虑在 Site/templates/Site/index.html 处创建模板并使用 render_template('Site/index.html'),这样模板就不会被应用程序模板目录中的另一个 index.html 意外覆盖。

如果您的文件夹结构是 Site=>templates=>Site 那么

@site.route('/index')
def index():
    return render_template('Site/index.html') #add Site folder name before index.html