“蓝图本地”是什么意思?

时间:2016-09-13 09:38:02

标签: python flask error-handling decorator

我在理解Blueprint.errorhandlerBlueprint.app_errorhandler之间的区别时遇到了一些麻烦。根据API文件(强调我的):

  

errorhandler(code_or_exception)

     

注册一个对此蓝图变为活动状态的错误处理程序   只要。请注意,路由不会发生在本地的a   蓝图所以404的错误处理程序通常不由a处理   蓝图除非是在视图函数内引起的。另一个特别   case是500内部服务器错误,总是从中查找   申请。

AFAIK,Flask中的蓝图对象是“一组可以在应用程序上注册的操作,甚至多次”。

我的问题是:

  1. 如何将错误置于一组操作的本地?
  2. 视图功能如何导致错误?

1 个答案:

答案 0 :(得分:1)

'local'表示与蓝图相关的路由注册。蓝图路径始终以您注册蓝图的名称为前缀,因此它们是自然分组的,并且在URL路径拓扑意义上它们具有位置。 'nonlocal'则是任何与蓝图无关的视图;他们将拥有不同的前缀或根本没有前缀。

查看函数可以引发exceptions,并且特定异常(从HTTPException派生的任何内容)都有与之关联的HTTP错误代码。 @blueprint.errorhandler()为此类异常或关联的HTTP错误代码注册处理程序。

文档说明在路由期间引发的错误(例如404 NotFound错误)还没有视图,因此您无法将该错误路由到具体蓝图。

在幕后,当路由成功找到处理请求的视图时,request.blueprint将设置为与该视图对应的关联注册蓝图。如果然后发生错误并且需要找到错误处理程序,则request.blueprint值允许Flask找到“本地”错误处理程序。