Turbogears-json-rendering

提供:Dev Guides
移動先:案内検索

TurboGears-JSONレンダリング

  • @ expose()デコレータは、デフォルトでhtmlコンテンツをレンダリングします。 ただし、これは *json content type に設定できます。 TurboGearsは、 tg.jsonify.JSONEncoder(_ * kwargs _)*クラスによるjsonレンダリングをサポートしています。 JSONデータをレンダリングするには、デコレータを公開するためにコンテンツタイプとしてjsonを渡すだけです。
@expose('json')
def jsondata(self, **kwargs):
   return dict(hello = 'World')

「/jsondata」URLがブラウザに入力された場合、それは表示することによって応答します-

{"hello": "World"}

jsonpレンダリング

jsonpは、パディング付きのjsonを表します。 コントローラから返されたすべての値を関数の引数として提供するjavascript関数への呼び出しでアプリケーション/javascript応答を提供するという事実を除いて、json出力と同様に機能します。

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