404错误处理程序中缺少Flask上下文

时间:2016-09-18 08:47:41

标签: python flask

我的烧瓶应用具有以下结构。当一个无效的网址出现时,会调用404错误,但是我的404.html需要来自context_processor的数据,但是在中止404中,蓝图是无,因此从不调用context_processor而404.html缺少数据。

我如何以不同的方式处理这个问题?

初始化的.py

def create_app(settings_overide=None):
    app = factory.create_app(__name__, __path__, settings_overide)
    if not app.debug:
        app.errorhandler(404)(page_not_found)

    return app

def page_not_found(e):
    return render_template('404.html'), 404

processors.py

@blueprint.context_processor
def load_global_data():
    return get_data()

1 个答案:

答案 0 :(得分:1)

当找不到路线时,尚未设置蓝图(因为设置蓝图需要先确定路线)。因此,404错误处理程序无法依靠已确定的蓝图。

您必须手动执行get_data()来电。测试是否已设置特定全局,然后在呈现404模板之前执行get_data()函数。