give jsonp format its own URL

This commit is contained in:
Frédéric Péters 2013-02-13 08:50:05 +01:00
parent 4792ce3e82
commit 21ea557074
3 changed files with 15 additions and 2 deletions

View File

@ -16,7 +16,7 @@
<ul>
<li><abbr title="JavaScript Object Notation">JSON</abbr>: <a href="json">{{ request.build_absolute_uri }}json</a></li>
<li><abbr title="JSON with Padding">JSONP</abbr>: <a href="json?format=jsonp">{{ request.build_absolute_uri }}json?format=jsonp</a></li>
<li><abbr title="JSON with Padding">JSONP</abbr>: <a href="jsonp">{{ request.build_absolute_uri }}jsonp</a></li>
</ul>
{% if sample %}
@ -32,7 +32,7 @@
<pre class="code">
$.ajax({
url: '{{ request.build_absolute_uri }}json?format=jsonp',
url: '{{ request.build_absolute_uri }}jsonp',
dataType: 'jsonp',
success: function(data) {
alert('Total results found: ' + data.data.length)

View File

@ -3,4 +3,5 @@ from django.conf.urls import patterns, url, include
urlpatterns = patterns('passerelle.datasources.views',
url(r'(?P<datasource>\w+)/$', 'view'),
url(r'(?P<datasource>\w+)/json$', 'json'),
url(r'(?P<datasource>\w+)/jsonp$', 'jsonp'),
)

View File

@ -31,3 +31,15 @@ def json(request, datasource):
return sorted([x for x in ds.get_data() if q in x['text'].lower()])
else:
return sorted(ds.get_data())
@to_json('api')
def jsonp(request, datasource):
request.GET = request.GET.copy()
request.GET['format'] = 'jsonp'
ds = BaseDataSource.objects.get_subclass(slug=datasource)
q = request.GET.get('q')
if q:
q = q.lower()
return sorted([x for x in ds.get_data() if q in x['text'].lower()])
else:
return sorted(ds.get_data())