4

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

app.py
blueprints/
    www.py
    shop.py

app.py从目录中的每个文件中导入蓝图对象,blueprints并将它们注册到具有适当子域的Flask对象中app.py(也从文件中导入)。每个蓝图都注册错误处理程序,但是这些仅在视图手动调用时调用abort(),而不是由一般错误调用(即在由shop.py调用错误处理程序管理的子域上调用不存在的 URL app.py。)

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

4

2 回答 2

5

Flask 的文档说这对于 404 和 500是不可能的。如果您需要此功能,您可以在蓝图中使用通配符路由来处理 404:

@a_blueprint.route("<path:invalid_path>")
def missing_resource(invalid_path):
    return "There isn't anything at " + invalid_path, 404
于 2013-10-30T01:18:51.840 回答
0

您可以使用 current_app 并将其放入蓝图中。就像是:

商店.py

from flask import current_app

@current_app.errorhandler(404)
def page_not_found(e):
return redirect(url_for('shop.index'))
于 2013-10-29T14:34:57.353 回答