我在理解Blueprint.errorhandler和Blueprint.app_errorhandler之间的区别时遇到了一些麻烦。根据API文件(强调我的):
errorhandler(code_or_exception)
注册一个对此蓝图变为活动状态的错误处理程序 只要。请注意,路由不会发生在本地的a 蓝图所以404的错误处理程序通常不由a处理 蓝图除非是在视图函数内引起的。另一个特别 case是500内部服务器错误,总是从中查找 申请。
AFAIK,Flask中的蓝图对象是“一组可以在应用程序上注册的操作,甚至多次”。
我的问题是:
答案 0 :(得分:1)
'local'表示与蓝图相关的路由注册。蓝图路径始终以您注册蓝图的名称为前缀,因此它们是自然分组的,并且在URL路径拓扑意义上它们具有位置。 'nonlocal'则是任何与蓝图无关的视图;他们将拥有不同的前缀或根本没有前缀。
查看函数可以引发exceptions,并且特定异常(从HTTPException
派生的任何内容)都有与之关联的HTTP错误代码。 @blueprint.errorhandler()
为此类异常或关联的HTTP错误代码注册处理程序。
文档说明在路由期间引发的错误(例如404 NotFound
错误)还没有视图,因此您无法将该错误路由到具体蓝图。
在幕后,当路由成功找到处理请求的视图时,request.blueprint
将设置为与该视图对应的关联注册蓝图。如果然后发生错误并且需要找到错误处理程序,则request.blueprint
值允许Flask找到“本地”错误处理程序。