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