Flask per-blueprint错误页面

时间:2013-10-29 13:48:07

标签: python error-handling flask

我有一个看起来像这样的烧瓶应用程序:

app.py
blueprints/
    www.py
    shop.py

app.pyblueprints目录中的每个文件导入蓝图对象,并使用Flask中的app.py对象注册它们,并使用相应的子域(也从文件)。每个蓝图都会注册错误处理程序,但只有在视图手动调用abort()时才调用这些错误处理程序,而不是通过一般错误调用(即调用由shop.py管理的子域上不存在的URL调用app.py上的错误处理程序1}}代替。)

有没有办法强制烧瓶将错误传递给正在处理发生错误的子域的蓝图?

2 个答案:

答案 0 :(得分:4)

Flask的文档says that this is not possible适用于404和500。如果您需要此功能,可能能够在蓝图中使用通配符路由来处理404s:

@a_blueprint.route("<path:invalid_path>")
def missing_resource(invalid_path):
    return "There isn't anything at " + invalid_path, 404

答案 1 :(得分:0)

您可以使用current_app并将其放入蓝图中。类似的东西:

<强> shop.py

from flask import current_app

@current_app.errorhandler(404)
def page_not_found(e):
return redirect(url_for('shop.index'))