Comments (5)
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:
- 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.
from tg2.
Original Author: pedersen, Original Timestamp: 2011-06-11 20:45:10.005000
Original Body: - milestone: 2.1.1 --> 2.2.0
from tg2.
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
from tg2.
4bad6da provides support for JSONP renderer, previous commits provided support for 1. and 2.
from tg2.
Documentation for JSONP available at http://turbogears.readthedocs.org/en/development/cookbook/jsonp.html
from tg2.
Related Issues (20)
- Using Kajiki & Jinja simultaneously doesn't work HOT 2
- configuration error: no challengers - Documentation for TG2 REST API with Bearer Token Authentication? HOT 1
- vontri gher HOT 2
- In quickstart template /error/document crashes if accessed directly
- Message in ErrorController should not include html tags
- Hooks documentration version 2.4.0 HOT 2
- Issues with @cached(type='memory') and no Accept-Language header HOT 1
- Error: tg.i18n.LanguageError: No translation file found for domain HOT 2
- "TypeError: No object (name: context) has been registered for this thread" when use config.__getitem__ in tgschedule
- kajiki include/import DOCTYPE tag HOT 2
- Python 3: TypeError (no context) which was not present on Python 2 HOT 2
- TurboGears2 and pytest conflict HOT 3
- ErrorPageApplicationWrapper without TraceErrorsMiddleware will mute tracebacks
- Secure attribute for webflash cookie HOT 3
- SQLAlchemy version conflict with TG2.4.3 devtools/SQLAlchemy >=1.4 and zope-sqlalchemy 1.4
- turbogears.org website certificate is expired HOT 1
- Activating Genshi lenient mode in Tg2
- localedir is overrides and not working
- Route/HTTP middleware after method should execute after exception response generate
- Error with objectproxy globals and current versions of mock
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tg2.