Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Problems with custom render functions and missing JSONP support #2

Closed
pedersen opened this Issue · 5 comments

2 participants

@pedersen
Owner

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

@pedersen
Owner

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():
del template_vars[key]
response.headers['Content-Type'] = 'text/javascript'
return '%s(%s)' % (template_name, json_encode(template_vars))

from myapp.config.app_cfg import base_config
base_config.render_functions['jsonp'] = render_jsonp
base_config.mimetype_lookup = {'.jsonp': 'text/javascript'}

But this reveals two shortcomings:

  1. 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.

  2. 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.

  3. After fixing 1. and 2. we may think about adding a JSONP renderer to the core.

@pedersen
Owner

Original Author: pedersen, Original Timestamp: 2011-06-11 20:45:10.005000

Original Body: - milestone: 2.1.1 --> 2.2.0

@pedersen
Owner

Original Author: pedersen, Original Timestamp: 2012-08-24 01:39:59.712000

Original Body: - version: 2.1.0 --> 2.1.5

  • milestone: 2.2.0 --> 2.3.0
@amol-
Owner

4bad6da provides support for JSONP renderer, previous commits provided support for 1. and 2.

@amol- amol- closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.