我有一个看起来像这样的烧瓶应用程序:
app.py
blueprints/
www.py
shop.py
app.py
从blueprints
目录中的每个文件导入蓝图对象,并使用Flask
中的app.py
对象注册它们,并使用相应的子域(也从文件)。每个蓝图都会注册错误处理程序,但只有在视图手动调用abort()
时才调用这些错误处理程序,而不是通过一般错误调用(即调用由shop.py
管理的子域上不存在的URL调用app.py
上的错误处理程序1}}代替。)
有没有办法强制烧瓶将错误传递给正在处理发生错误的子域的蓝图?
答案 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'))