This issue existed in Trac. The original can be viewed at http://trac.turbogears.org/ticket/2513
This issue existed on SourceForge. The original can be viewed at https://sourceforge.net/p/turbogears2/tickets/49
Original Author: pedersen, Original Timestamp: 2011-03-28 02:47:03.024000
Original Body: Currently, TG 2.1rc1 does not come with a templating engine for JSONP.
You can add a render function this:
from tg import json_encode, response
from tg.render import _get_tg_vars
def render_jsonp(template_name, template_vars, **kwargs):
callback = template_name or kwargs.pop('callback', None) or 'callback'
for key in _get_tg_vars():
return '%s(%s)' % (template_name, json_encode(template_vars))
from myapp.config.app_cfg import base_config
base_config.render_functions['jsonp'] = render_jsonp
But this reveals two shortcomings:
In this case, we don't want any templating vars, and need to remove them using the undocumented function _get_tg_vars(). It would be better and more performant if the templating vars would not be included in the first place. But unfortunately, the templating engines which don't use templating vars are hard coded in TG (currently 'json' and 'amf') in two places in tg.decorators and tg.render. This should be made configurable.
I don't see a way of defining a default content type for the render function, so I have to set it directly on the response object which is really not nice. The render functions should not touch the request or response objects.
After fixing 1. and 2. we may think about adding a JSONP renderer to the core.
Original Author: pedersen, Original Timestamp: 2011-06-11 20:45:10.005000
Original Body: - milestone: 2.1.1 --> 2.2.0
Original Author: pedersen, Original Timestamp: 2012-08-24 01:39:59.712000
Original Body: - version: 2.1.0 --> 2.1.5
4bad6da provides support for JSONP renderer, previous commits provided support for 1. and 2.
Documentation for JSONP available at http://turbogears.readthedocs.org/en/development/cookbook/jsonp.html