Flask render_template上下文在Blueprint中是None

时间:2012-10-22 05:35:18

标签: python flask

我对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是:

    WSGI应用案例
  • None
  • 直接通话案例
  • <RequestContext 'http://aaa.bbb.com:5000/' [GET] of __init__>

我有什么想法可以解决这个错误吗?谢谢!

2 个答案:

答案 0 :(得分:1)

确保您导入所有正确的模块:

from flask import Flask, render_template, make_response, request, Response

您可能想为视图创建一个包装器。

答案 1 :(得分:1)

设置Flask时,请确保所有依赖项都已正确安装。这就是这种情况下的问题。

如果在mod_wsgi上运行,还要确保任何读取或写入都指向正确的位置;否则,应用程序在使用app.run()运行时会生效,但使用Apache时路径会发生变化。