TurboGears - Rendering JSON

Itu @expose()dekorator secara default menampilkan konten html. Namun, ini dapat diatur kejson content type. TurboGears mendukung rendering json melaluitg.jsonify.JSONEncoder (**kwargs)kelas. Untuk merender data json cukup berikan json sebagai tipe konten untuk mengekspos dekorator.

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

Jika URL '/ jsondata' dimasukkan di browser, itu akan merespon dengan menunjukkan -

{"hello": "World"}

jsonp Rendering

jsonp adalah singkatan dari json with padding. Cara kerjanya mirip dengan keluaran json kecuali fakta bahwa ia menyediakan respons aplikasi / javascript dengan panggilan ke fungsi javascript yang menyediakan semua nilai yang dikembalikan oleh pengontrol sebagai argumen fungsi.

Untuk mengaktifkan rendering jsonp, Anda harus menambahkannya terlebih dahulu ke daftar mesin yang diperlukan di dalam aplikasi Anda - config/app_cfg.py -

base_config.renderers.append('jsonp')

Tulis dekorator ekspos Anda sebagai berikut -

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

Saat mengakses / jsonpdata? Callback = callme, Anda harus melihat -

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