2024-04-25 23:55:41 发布
网友
我正在使用Turbogears2开发一个小型web应用程序。在我的一些“控制器”中,我希望响应客户机一个json对象,其中包含错误信息,而不是遵循标准错误页面模板的html页面,因为ajax客户端可以读取错误消息并有自己的显示方式。在
有多种方法可以实现这一点。如果它只绑定到某个控制器,则可以很容易地为它们注册一个控制器包装器(使用tg.hooks.wrap_controller),并在需要时返回JSON,而不是纯错误。控制器包装器记录在http://turbogears.readthedocs.org/en/latest/turbogears/hooks.html#controller-wrappers
tg.hooks.wrap_controller
JSON
否则,另一个选择是在controller函数上使用decorator来捕捉错误。这也是tgext.crud通过catch_errors自定义修饰符https://github.com/TurboGears/tgext.crud/blob/master/tgext/crud/decorators.py#L114报告json错误时所做的
tgext.crud
catch_errors
控制器包装解决方案通常更强大,因为它也可以应用于第三方控制器。否则,您甚至可以劫持controllers/error.py中的ErrorController,以使用json.dumps返回json(TurboGears返回的响应与字符串或tg.Response实例时一样)。在
controllers/error.py
ErrorController
json.dumps
tg.Response
有多种方法可以实现这一点。如果它只绑定到某个控制器,则可以很容易地为它们注册一个控制器包装器(使用
tg.hooks.wrap_controller
),并在需要时返回JSON
,而不是纯错误。控制器包装器记录在http://turbogears.readthedocs.org/en/latest/turbogears/hooks.html#controller-wrappers否则,另一个选择是在controller函数上使用decorator来捕捉错误。这也是
tgext.crud
通过catch_errors
自定义修饰符https://github.com/TurboGears/tgext.crud/blob/master/tgext/crud/decorators.py#L114报告json错误时所做的控制器包装解决方案通常更强大,因为它也可以应用于第三方控制器。否则,您甚至可以劫持
controllers/error.py
中的ErrorController
,以使用json.dumps
返回json(TurboGears返回的响应与字符串或tg.Response
实例时一样)。在相关问题 更多 >
编程相关推荐