gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 13:24:58 35 4
gpt4 key购买 nike

我希望用户向我的 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,即基于函数的 View 吗?

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

最佳答案

您可以覆盖 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

关于Django Rest Framework,使用 GET 请求传递参数,基于分类的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48299466/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com