Django URL“包含”一些字符串?

时间:2015-03-27 11:20:21

标签: regex django django-urls

如何检查我的网址是否包含某些字符串?

url(r'^search/.*callback.*$', 'event_search_jsonp', {}, 'event_search_jsonp'),

不起作用!如果我的网址中有回调,Django不会使用event_search_jsonp视图 - http://127.0.0.1:8000/api/search/?callback=123

编辑1

我有这样的事情以及如何在这里获得request

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)

1 个答案:

答案 0 :(得分:3)

Django URL不包含查询字符串,即?之后的位。您需要在视图中进行测试:

def event_search_jsonp(request):
    if 'callback' in request.GET:
        # do_something

修改

这不起作用,因为类级属性是在导入时定义的,而不是在运行时定义的。您需要定义get_renderers方法,而不是在那里进行测试。类似的东西:

class SearchView(APIView):
    def get_renderers(self):
        if 'callback' in self.request.GET:
            return JSONPRenderer()
        else:
            return JSONRenderer()