Как получить ответ с сообщением, ошибкой, статусом в django rest framework

Всем привет, я создаю api с помощью drf, но я хочу получить ответ с другим набором форм, ниже я упомянул мой текущий ответ и ожидаемый ответ, как я могу получить ожидаемый набор форм ответа api.

views.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
    }
}
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}})

Немного поздно, но вы можете сделать это так

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)

Если вы получаете ошибку типа, что вы не можете отправить данные типа Team, то есть вашу модель, то сначала сериализуйте полученные данные. Также лучше добавить код статуса помимо ответа, как в последней строке приведенного выше кода, а не внутри словаря ответа.

Вернуться на верх