为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Django Rest Framework ViewSet 中获取额外参数

如何在 Django Rest Framework ViewSet 中获取额外参数

ITMISS 2021-06-21 18:02:24
我必须使用 Django Rest Framework 实现一个端点,该端点以这种方式接收额外参数:GET .../hotels_in_period/?check_in=2018-09-30&check_out=2018-10-10端点应该同时接收参数check-in和check-out,但我不知道如何list在视图集的方法中获取它们。我以为它们可以作为 提供request.data,但事实并非如此。我将不胜感激任何帮助。
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

使用 来自文档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)


查看完整回答
反对 回复 2021-06-29
  • 1 回答
  • 0 关注
  • 353 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号