Декоратор @expose () по умолчанию отображает HTML-контент. Однако это может быть установлено в тип контента json . 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, за исключением того факта, что он предоставляет ответ application / 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 вы должны увидеть —