Reputation: 2996
How to check if my URL contains some string?
url(r'^search/.*callback.*$', 'event_search_jsonp', {}, 'event_search_jsonp'),
Doesn't work! Django doesn't use event_search_jsonp view if I have callback in my url - http://127.0.0.1:8000/api/search/?callback=123
EDIT 1
I have something like this and how I can get request
here?
class SearchView(APIView):
if 'callback' in self.request.GET:
renderer_classes = (JSONPRenderer, )
else:
renderer_classes = (JSONRenderer, )
def get(self, request, format=None, *args, **kwargs):
events = Event.objects.all().order_by("-id")[:10]
serializer = EventSerializer(events, many=True)
return Response(serializer.data)
Upvotes: 1
Views: 1364
Reputation: 599590
Django URLs don't include the querystring, which is the bit after the ?
. You'd need to do the test in your view:
def event_search_jsonp(request):
if 'callback' in request.GET:
# do_something
Edit
That doesn't work because class-level attributes are defined at import time, not at run time. Rather than doing the test there, you need to define the get_renderers
method. Something like:
class SearchView(APIView):
def get_renderers(self):
if 'callback' in self.request.GET:
return JSONPRenderer()
else:
return JSONRenderer()
Upvotes: 3