我正在使用Turbogears2开发一个小型web应用程序。在我的一些“控制器”中,我想响应客户端一个内部带有错误信息的json对象,而不是遵循标准错误页面模板的html页面,因为ajax客户端可以读取错误消息并以自己的方式显示它。
发布于 2014-03-10 23:08:03
有多种方法可以实现这一点。如果它只绑定到一些控制器,那么您可以很容易地为它们注册一个控制器包装器(使用tg.hooks.wrap_controller),并在需要时返回JSON而不是简单的错误。控制器包装器在http://turbogears.readthedocs.org/en/latest/turbogears/hooks.html#controller-wrappers上提供了文档
否则,另一种选择是在控制器函数上使用装饰器来捕获错误。当通过catch_errors定制装饰器https://github.com/TurboGears/tgext.crud/blob/master/tgext/crud/decorators.py#L114报告json错误时,tgext.crud也是这样做的
控制器包装器解决方案通常更强大,因为它也可以应用于第三方控制器。否则,您甚至可以劫持controllers/error.py中的ErrorController以使用json.dumps返回json (当响应是字符串或tg.Response实例时,TurboGears返回原样)。
https://stackoverflow.com/questions/22294342
复制相似问题