我正在使用 Turbogears2 开发一个小型 Web 应用程序。在我的一些“控制器”中,我想响应客户端一个带有错误信息的 json 对象,而不是遵循标准错误页面模板的 html 页面,因为 ajax 客户端可以读取错误消息并有自己的方式来显示它。
问问题
379 次
1 回答
1
有多种方法可以实现这一目标。如果它只绑定到某个控制器,您可以轻松地为它们注册一个控制器包装器(使用tg.hooks.wrap_controller
)并在需要时返回JSON
而不是简单的错误。控制器包装器记录在http://turbogears.readthedocs.org/en/latest/turbogears/hooks.html#controller-wrappers
否则,另一种选择是在控制器函数上使用装饰器来捕获错误。这也是通过自定义装饰器tgext.crud
报告 json 错误时所做的事情: https ://github.com/TurboGears/tgext.crud/blob/master/tgext/crud/decorators.py#L114catch_errors
控制器包装器解决方案通常更强大,因为它也可以应用于第三方控制器。否则,您甚至可以使用ErrorController
in劫持controllers/error.py
返回 json json.dumps
(TurboGears 在响应为字符串或tg.Response
实例时按原样返回)。
于 2014-03-10T15:08:02.763 回答