TurboGears - JSON 渲染



@expose() 装饰器默认呈现 html 内容。但是,可以将其设置为 json 内容类型。TurboGears 通过 tg.jsonify.JSONEncoder (**kwargs) 类支持 json 渲染。若要呈现 json 数据,只需将 json 作为内容类型传递给 expose 装饰器即可。

@expose('json')
def jsondata(self, **kwargs):
   return dict(hello = 'World')

如果在浏览器中输入 '/jsondata' URL,它将通过响应方式显示 −

{"hello": "World"}

jsonp 渲染

JSONP 代表带填充的 JSON。除了它以调用 javascript 函数的 application/javascript 响应提供控制器返回的所有值外,它的工作方式与 json 输出类似,该函数可提供函数参数。

要启用 jsonp 呈现,你必须先将其添加到应用程序中的必需引擎列表中 – config/app_cfg.py

base_config.renderers.append('jsonp')

按如下方式编写你的 expose 装饰器 −

@expose('json')
@expose('jsonp')
def jsonpdata (self, **kwargs): 
   return dict(hello = 'World')

访问 /jsonpdata?callback = callme 时,你应看到 −

callme({"hello": "World"});
广告