flask为blueprint增加error_handler

对整个app增加errorhandler,只需如下:
@app.errorhandler(404)
def page_not_found(error):
    cats = Category.get_all_data_cats()
    return render_template('portal/404.html', cats=cats), 404

如果只在某个蓝图中(比如放在__init__.py中):

@portal_page.errorhandler(404)
def page_not_found(error):
    cats = Category.get_all_data_cats()
    return render_template('portal/404.html', cats=cats), 404

上述代码并不报错,abort(404)也可以跳转到404,但当页面遇到404错误时,并不能自动跳转到404页面。

改为如下写法:

1 @portal_page.app_errorhandler(404)
2 def page_not_found(error):
3     cats = Category.get_all_data_cats()
4     return render_template('portal/404.html', cats=cats), 404

正常。

参考:

1、Can we have Flask error handlers in separate module

2、errorhandler-in-separate-blueprint-is-not-working

posted @ 2019-12-13 08:41  万里沙来手一挥  阅读(578)  评论(2编辑  收藏  举报