TurboGears - рендеринг JSON

В @expose()декоратор по умолчанию отображает html-контент. Однако это может быть установлено наjson content type. TurboGears поддерживает рендеринг json черезtg.jsonify.JSONEncoder (**kwargs)класс. Чтобы отобразить данные json, просто передайте json в качестве типа содержимого для предоставления декоратора.

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

Если URL-адрес '/ jsondata' введен в браузере, он ответит, показывая -

{"hello": "World"}

jsonp рендеринг

jsonp означает json с заполнением. Он работает аналогично выходу json, за исключением того факта, что он предоставляет ответ приложения / javascript с вызовом функции javascript, предоставляя все значения, возвращаемые контроллером в качестве аргументов функции.

Чтобы включить рендеринг jsonp, вы должны сначала добавить его в список необходимых движков внутри вашего приложения - config/app_cfg.py -

base_config.renderers.append('jsonp')

Напишите свой декоратор экспонирования следующим образом -

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

При доступе к / jsonpdata? Callback = callme вы должны увидеть -

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