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



我的URL有"营养师"查询参数,在这种情况下,它将获得具有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方法。

最新更新