微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用查询参数测试 django rest url?

如何解决如何使用查询参数测试 django rest url?

我的 URL 有 'nutritionist' 查询参数,在这种情况下,它将获得包含 id=1 的营养师的个人资料

/profiles?nutritionist=1

当我尝试像这样测试这种“过滤”时:

def test_get_user_belonging_to_a_nutritionist(self):
        response = self.client.get("/profiles?nutritionist=1/",secure=True)

        users = CustomUser.objects.filter(nutritionist=1)
        serializer = CustomUserDetailsSerializer(users,many=True)

        self.assertEqual(response.data,serializer.data)

响应包含 HttpResponsePermanentRedirect 对象,而不是正常响应

如果有帮助,这是我的 Views.py

class GetProfilesViewSet(generics.ListAPIView):
    serializer_class = CustomUserDetailsSerializer

    def get_queryset(self):
        """
        Optionally restricts the returned purchases to a given user,by filtering against a `username` query parameter in the URL.
        """
        queryset = CustomUser.objects.all()
        nutritionist_id = self.request.query_params.get('nutritionist')
        if nutritionist_id is not None:
            queryset = queryset.filter(nutritionist=nutritionist_id)
        return queryset

我如何测试这个案例?

解决方法

查询参数应在/之后添加,并与?开始一起使用。

当有多个查询参数时,使用 & 串联。

所以你的 URL 应该写成 /profiles/?nutritionist=1

最后,建议使用查询过滤器 (django-filter) 而不是覆盖 get_queryset 方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。