Как получить ответ с сообщением, ошибкой, статусом в 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, то есть вашу модель, то сначала сериализуйте полученные данные. Также лучше добавить код статуса помимо ответа, как в последней строке приведенного выше кода, а не внутри словаря ответа.