gpt4 book ai didi

python - django-rest-框架 : list parameters in URL

转载 作者:太空狗 更新时间:2023-10-29 21:23:41 25 4
gpt4 key购买 nike

我是 django 和 django-rest-framework 的新手,但我正在尝试将列表传递到 url 参数中,然后通过它们过滤我的模型。

假设客户端应用程序正在发送一个看起来像这样的请求......

  url: "api.com/?something=string,string2,string3&?subthings=sub,sub2,sub3&?year=2014,2015,2016/"

我想传入这些参数“things”、“subthings”和“years”及其值。

url 在哪里看起来像这样?

注意:技巧在于它不会始终是每个参数的长度为 3 的数组。

有人可以指出我的 url 正则表达式应该如何处理列表并在我的 View 中检索查询列表的正确方向。

谢谢!

最佳答案

感谢上面的文档链接,展示我是如何做到这一点的。注意:我使用管道作为我的 url 分隔符而不是逗号 -> '|'。

在我的 urls.py

url(r'^$', SomethingAPIView.as_view(), name='something'),

在我的views.py

class SomethingAPIView(ListAPIView):
# whatever serializer class

def get_queryset(self):
query_params = self.request.query_params
somethings = query_params.get('something', None)
subthings = query_params.get('subthing', None)
years = query_params.get('year', None)

# create an empty list for parameters to be filters by
somethingParams = []
subthingsParams = []
yearParams = []

# create the list based on the query parameters
if somethings is not None:
for something in somethings.split('|'):
countryParams.append(int(something))
if subthings is not None:
for subthing in subthings.split('|'):
subthingsParams.append(int(subthing))
if years is not None:
for year in years.split('|'):
yearParams.append(int(year))

if somethings and subthings and years is not None:
queryset_list = Model.objects.all()
queryset_list = queryset_list.filter(something_id__in=countryParams)
queryset_list = queryset_list.filter(subthing_id__in=subthingsParams)
queryset_list = queryset_list.filter(year__in=yearParams)
return queryset_list

如果结果无效,我确实需要检查空结果。但这里是希望在查询参数中传递多个值的人们的起点。

此处的有效网址为 /?something=1|2|3&subthing=4|5|6&year=2015|2016

关于python - django-rest-框架 : list parameters in URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39277196/

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