TurboGears - Renderização JSON

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"});