我对Flask比较新,但我已经发现需要使用蓝图了。但是,在我的蓝图中,我正在尝试渲染模板,但却出错了。
当连接为WSGI应用程序(在Dreamhost上)时,render_template函数返回此错误:
File ".../app/ui/__init__.py", line 95, in index
response = make_response(render_template('index.html', **data))
File ".../flask/templating.py", line 123, in render_template
ctx.app.update_template_context(context)
AttributeError: 'NoneType' object has no attribute 'app'
但是,当我直接在调试模式下调用app.py时,它完美无缺! (下同)
python app/app.py
在app.py中:
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
编辑:渲染模板:
@ui_blueprint.route('/', methods=['GET'])
@ui_blueprint.route('/home', methods=['GET'])
def index():
data = {
'title': 'Index'
}
response = make_response(render_template('index.html', **data))
return response
编辑2: ctx
是:
None
<RequestContext 'http://aaa.bbb.com:5000/' [GET] of __init__>
我有什么想法可以解决这个错误吗?谢谢!
答案 0 :(得分:1)
确保您导入所有正确的模块:
from flask import Flask, render_template, make_response, request, Response
您可能想为视图创建一个包装器。
答案 1 :(得分:1)
设置Flask时,请确保所有依赖项都已正确安装。这就是这种情况下的问题。
如果在mod_wsgi上运行,还要确保任何读取或写入都指向正确的位置;否则,应用程序在使用app.run()
运行时会生效,但使用Apache时路径会发生变化。