TurboGears - Rendu JSON

le @expose()decorator par défaut rend le contenu html. Cependant, cela peut être réglé surjson content type. TurboGears prend en charge le rendu Json viatg.jsonify.JSONEncoder (**kwargs)classe. Pour rendre les données json, passez simplement json comme type de contenu pour exposer le décorateur.

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

Si l'URL '/ jsondata' est entrée dans le navigateur, il répondra en affichant -

{"hello": "World"}

rendu jsonp

jsonp signifie json avec remplissage. Il fonctionne de la même manière que la sortie json, à l'exception du fait qu'il fournit une réponse application / javascript avec un appel à une fonction javascript fournissant toutes les valeurs renvoyées par le contrôleur en tant qu'arguments de fonction.

Pour activer le rendu jsonp, vous devez d'abord l'ajouter à la liste des moteurs requis dans votre application - config/app_cfg.py -

base_config.renderers.append('jsonp')

Écrivez votre décorateur d'exposition comme suit -

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

Lorsque vous accédez à / jsonpdata? Callback = callme, vous devriez voir -

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