如何解决如何使用查询参数测试 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 举报,一经查实,本站将立刻删除。