Django URL "contains" 一些字符串?

Django URL "contains" some string?

如何检查我的 URL 是否包含一些字符串?

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

无效!如果我的 url - http://127.0.0.1:8000/api/search/?callback=123

中有回调,Django 不会使用 event_search_jsonp 视图

编辑 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)

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

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

编辑

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

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