Flask error: jinja2.exceptions.TemplateNotFound:
Flask error: jinja2.exceptions.TemplateNotFound:
我有一个 Flask 项目,FlaskUserAuthentication
,它有一个同名的包(FlaskUserAuthentication),在那个包下还有两个包,即 API
和 Site
。以下是结构-
API
和Site
包下的__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
我有一个 Flask 项目,FlaskUserAuthentication
,它有一个同名的包(FlaskUserAuthentication),在那个包下还有两个包,即 API
和 Site
。以下是结构-
API
和Site
包下的__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