烧瓶错误:jinja2.exceptions.TemplateNotFound:

时间:2019-11-19 11:17:07

标签: python templates flask blueprint

我有一个Flask项目FlaskUserAuthentication,它有一个具有相同名称的程序包(FlaskUserAuthentication),在该程序包下还有两个程序包,分别是APISite。以下是结构-

enter image description here

__init__.pyAPI软件包下的Site文件均为空。

以下是__init__.py主软件包下的FlaskUserAuthentication文件中的代码。

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

很明显,我在index.html文件夹下有Site=>templates=>Site文件。以下是我的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 .:经过一些建议,我已经更新了解决方案和相应的问题。还是同样的问题。

2 个答案:

答案 0 :(得分:1)

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

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

有关更多信息,请参见blueprints docs。特别是,您可能要考虑在Site/templates/Site/index.html上创建模板并使用render_template('Site/index.html'),以便该模板不会被应用模板目录中的另一个index.html意外覆盖。

答案 1 :(得分:0)

如果您的文件夹结构为Site=>templates=>Site,则

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