我有一个 JSON 结构,例如,
[
{
"date": "2017-12-17 06:26:53",
"name": "ab",
},
{
"date": "2017-12-20 03:26:53",
"name": "ab"
},
{
"date": "2017-12-18 04:26:53",
"name": "ab"
},
{
"date": "2017-12-19 05:26:53",
"name": "ab"
}
]
我正在使用 Django Rest 框架。每当我向 localhost/namelist/{{name}}/
发出 GET 请求时,都会返回 JSON,其中 "name": "ab"
。
现在,我想根据日期范围返回 JSON。我将在 url 中传递开始日期和结束日期,它应该返回该特定日期范围内的值,时间应该被忽略。此外,我们还必须考虑月份,而不仅仅是日期。在此示例中,月份是相同的,但在实际场景中月份可能会有所不同。例如,localhost/namelist/{{name}}/{{start_date}}/{{end_date}}/
如果 URL 是,localhost/namelist/abcd/2017-12-17/2017-12-19/
那么它应该返回,
[
{
"date": "2017-12-17 06:26:53",
"name": "ab",
},
{
"date": "2017-12-18 04:26:53",
"name": "ab"
},
{
"date": "2017-12-19 05:26:53",
"name": "ab"
}
]
views.py :-
def get_queryset(self):
param = self.kwargs.get('pk')
param2 = self.kwargs.get('ak')
return namelist.objects.filter(name=param, date = param2)
urls.py:-
urlpatterns = {
url('^namelist/(?P<pk>[\w\-]+)/(?P<ak>[\w\-]+)/$', ListViewParam.as_view()),
}
我可以在 URL 中传递日期,但是传递日期范围的推荐方法是什么?
最佳答案
我要做的是将范围移至 start
和 end
查询参数,而不是将它们保留为休息风格的 URL 格式。
这会将您的网址修改为
url('^namelist/(?P<pk>[\w\-]+)/$', ListViewParam.as_view()),
以及您的看法
def queryset(self):
name = self.kwargs.get('ak', None)
start = self.query_params.get('start', None)
end = self.query_params.get('end', None)
return namelist.objects.filter(name = name, date__range(start, end))
利用 range
字段查找
这需要您将 URL 移动到类似
localhost/namelist/abcd/?start=2017-12-17&end=2017-12-19
关于python - 在 Django Rest 中传递 URL 中的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47979647/