我有一个Flask项目FlaskUserAuthentication
,它有一个具有相同名称的程序包(FlaskUserAuthentication),在该程序包下还有两个程序包,分别是API
和Site
。以下是结构-
__init__.py
和API
软件包下的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 .:经过一些建议,我已经更新了解决方案和相应的问题。还是同样的问题。
答案 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