问题描述
我正在使用Turbogears2开发一个小型Web应用程序。 在我的某些“控制器”中,我希望响应客户端一个带有错误信息的json对象,而不是遵循标准错误页面模板的html页面,这是因为ajax客户端可以读取错误消息并拥有自己的方式显示它。
1楼
您可以通过多种方式实现这一目标。
如果仅绑定到某个控制器,则可以轻松地为它们注册一个控制器包装器(使用tg.hooks.wrap_controller
),并在需要时返回JSON
而不是普通错误。
控制器包装器记录在
否则,另一个选择是在控制器功能上使用装饰器来捕获错误。
当通过catch_errors
自定义装饰器报告json错误时, tgext.crud
也会执行此操作: :
控制器包装器解决方案通常更强大,因为它也可以应用于第三方控制器。
否则,您甚至可以劫持controllers/error.py
的ErrorController
,以使用json.dumps
返回json(TurboGears是字符串或tg.Response
实例时json.dumps
返回响应)。