我必须使用Django Rest Framework实现一个通过这种方式接收额外参数的端点:
GET .../hotels_in_period/?check_in=2018-09-30&check_out=2018-10-10
端点应该同时接收参数check-in
和check-out
,但是我不知道如何在视图集的list
方法中获取它们。我以为它们将以request.data
的形式提供,但没有。
我将不胜感激。
答案 0 :(得分:2)
使用request.query_params
来自文档
request.query_params
是更正确命名的同义词request.GET
。为使代码更清晰,我们建议使用
request.query_params
而不是Django的标准request.GET
。这样做将有助于保持 您的代码库更加正确和明显-任何HTTP方法类型都可能 包括查询参数,而不仅仅是GET
请求
示例:
class TagsAPIView(APIView):
def get(self, request):
search = request.query_params.get('search')
if search:
data = get_paginated_data(
data=TagSerializer(
Tag.objects.filter(name__contains=search).annotate(posts_count=Count('posts')).order_by(
'-posts_count').exclude(posts__isnull=True), many=True).data,
page=request.query_params.get('page'),
limit=request.query_params.get('limit'),
url=F"/social/tags/?search={search}"
)
else:
data = get_paginated_data(
data=TagSerializer(
Tag.objects.all().annotate(posts_count=Count('posts')).order_by('-posts_count').exclude(
posts__isnull=True),
many=True).data,
page=request.query_params.get('page'),
limit=request.query_params.get('limit'),
url=F"/social/tags/?"
)
return JsonResponse(data)