Django Rest Framework,使用GET请求传递参数,基于分类的视图

时间:2018-01-17 11:00:00

标签: django django-rest-framework

我希望用户向我的Django REST API发送GET请求:

127.0.0.1:8000/model/?radius=5&longitude=50&latitude=55.1214

用他的经度/纬度和半径,传入参数,并使用GeoDjango获取查询集。

例如,目前我有:

class ModelViewSet(viewsets.ModelViewSet):
    queryset = Model.objects.all()

我理想的是:

class ModelViewSet(viewsets.ModelViewSet):
     radius = request.data['radius']
     location = Point(request.data['longitude'],request.data['latitude']
     # filter results by distance using geodjango
     queryset = Model.objects.filer(location__distance_lte=(location, D(m=distance))).distance(location).order_by('distance')

现在出现几个错误:

1)request未定义 - 我应该使用api_view,即基于函数的视图吗?

2)DRF page表示request.data仅用于POST,PUT和PATCH方法。如何使用GET发送参数?

2 个答案:

答案 0 :(得分:15)

您可以为此目的覆盖get_queryset方法。至于查询字符串参数,你是对的,request.data保存POST数据,你可以通过request.query_params获取查询字符串参数

[-S, S]

答案 1 :(得分:0)

我遇到了同样的问题,要解决它,您可以在 self.request.parser_context.get('kwargs') 方法下使用 get_queryset 从 url 获取参数。