o @expose()decorator, por padrão, renderiza o conteúdo html. No entanto, isso pode ser definido comojson content type. TurboGears suporta renderização json através detg.jsonify.JSONEncoder (**kwargs)classe. Para renderizar dados json, simplesmente passe json como tipo de conteúdo para expor o decorador.
@expose('json')
def jsondata(self, **kwargs):
return dict(hello = 'World')
Se o URL '/ jsondata' for inserido no navegador, ele responderá mostrando -
{"hello": "World"}
Renderização jsonp
jsonp significa json com preenchimento. Ele funciona de forma semelhante à saída json, exceto pelo fato de que fornece uma resposta de aplicativo / javascript com uma chamada para uma função javascript fornecendo todos os valores retornados pelo controlador como argumentos de função.
Para habilitar a renderização jsonp, você deve primeiro anexá-lo à lista de motores necessários dentro de seu aplicativo - config/app_cfg.py -
base_config.renderers.append('jsonp')
Escreva seu decorador de exposição da seguinte maneira -
@expose('json')
@expose('jsonp')
def jsonpdata (self, **kwargs):
return dict(hello = 'World')
Ao acessar / jsonpdata? Callback = callme, você verá -
callme({"hello": "World"});