GRS*_*GRS 16 django django-rest-framework
我希望用户向我的Django REST API发送GET请求:
127.0.0.1:8000/model/?radius=5&longitude=50&latitude=55.1214
Run Code Online (Sandbox Code Playgroud)
使用他的经度/纬度和半径,传入参数,并使用GeoDjango获取查询集.
例如,目前我有:
class ModelViewSet(viewsets.ModelViewSet):
queryset = Model.objects.all()
Run Code Online (Sandbox Code Playgroud)
而我理想的是:
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')
Run Code Online (Sandbox Code Playgroud)
现在有几个立即错误:
1)request
未定义 - 我应该使用api_view,即基于函数的视图吗?
2)DRF页面说request.data仅用于POST,PUT和PATCH方法.如何使用GET发送参数?
Ozg*_*ali 29
您可以为此目的覆盖get_queryset方法.至于查询字符串参数,你是对的,request.data保存POST数据,你可以通过request.query_params获取查询字符串参数
def get_queryset(self):
longitude = self.request.query_params.get('longitude')
latitude= self.request.query_params.get('latitude')
radius = self.request.query_params.get('radius')
location = Point(longitude, latitude)
queryset = Model.objects.filter(location__distance_lte=(location, D(m=distance))).distance(location).order_by('distance')
return queryset
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24194 次 |
最近记录: |