python 如何在django rest框架中获得消息,错误,状态响应

anhgbhbe  于 2023-03-28  发布在  Python
关注(0)|答案(2)|浏览(112)

大家好,我正在使用DRF创建API,但我希望有不同的形式的响应,下面我提到了我目前的响应和预期的response.how可以实现我预期的API响应。

查看次数.py

class TeamlistViewset(viewsets.ViewSet):
    def list (self,request):
        team=Team.objects.all()
        serializer=TeamSerializer(team,many=True)
        return Response(serializer.data)

API响应

[
    {
        "id": 1,
        "name": "Deadly Shark"
    }
]

期望的API响应

{
    "message": "list retrieval",
    "error": false,
    "code": 200,
    "results": {
        "totalItems": 1,
        "pageData": [
            {
                "id": 1,
                "name": "Deadly Shark"
                
            }
        ],
        "totalPages": null,
        "currentPage": 0
    }
}
py49o6xq

py49o6xq1#

这是解决方案

class DriverlistViewset(viewsets.ViewSet):
    # permission_classes = (IsAuthenticated,)

    def list (self,request):
        team=Team.objects.all()
        serializer=TeamSerializer(team,many=True)
        # headers=self.get_success_headers(serializer.data)
        try:
            return Response({'message':'sucess','error':False,'code':200,'result':{'totalItems':len(serializer.data),'items':serializer.data,'totalPages':'null','currentPage':0}},status=HTTP_200_OK)
        except Exception as e:
            return Response({'message':'fail','error':True,'code':500,'result':{'totalItems':0,'items':[],'totalPages':0,'currentPage':0}})
xbp102n0

xbp102n02#

有点晚了,但你可以这样做

class TeamlistViewset(viewsets.ViewSet):
    def list (self,request):
        team=Team.objects.all()
        serializer=TeamSerializer(team,many=True)
        response = {
           "message": "list retrieval",
           "error": False,
           "code": 200,
           "results": serializer.data
        }
        return Response(response, status=status.HTTP_200_OK)

如果你得到类型错误,你不能发送类型团队的数据,即你的模型,然后序列化你首先收到的数据。此外,最好在响应之外添加状态代码,例如在上面代码的最后一行,而不是在响应字典中。

相关问题