TurboGears - Rendering JSON

Il @expose()decorator per impostazione predefinita rende il contenuto html. Tuttavia, questo può essere impostato sujson content type. TurboGears supporta il rendering json tramitetg.jsonify.JSONEncoder (**kwargs)classe. Per eseguire il rendering dei dati json, è sufficiente passare json come tipo di contenuto per esporre decorator.

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

Se l'URL "/ jsondata" viene inserito nel browser, risponderà mostrando:

{"hello": "World"}

jsonp Rendering

jsonp sta per json con imbottitura. Funziona in modo simile all'output json tranne per il fatto che fornisce una risposta application / javascript con una chiamata a una funzione javascript fornendo tutti i valori restituiti dal controller come argomenti della funzione.

Per abilitare il rendering jsonp devi prima aggiungerlo all'elenco dei motori richiesti all'interno della tua applicazione - config/app_cfg.py -

base_config.renderers.append('jsonp')

Scrivi il tuo decoratore di esposizioni come segue:

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

Quando accedi a / jsonpdata? Callback = callme, dovresti vedere -

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