封裝一個CommonResponse對象


需求: 封裝CommonResponse對象使用方法如下

Copy
return CoomonResponse('100','成功',boo_ser.data)
return CoomonResponse('101','驗證失敗',boo_ser.errors)

實現:

Copy
from rest_framework.response import Response


class CommonResponse(Response):
    def __init__(self, code=1000, messages='ok', results=None, status=None, template_name=None, headers=None, exception=False, content_type=None, **kwargs):
        data = {
            'code': code,
            'messages': messages,
        }
        data.update(kwargs)
        if results:
            data['results'] = results
        super().__init__(data=data, status=status,
                         template_name=template_name, headers=headers,
                         exception=exception, content_type=content_type)

視圖中使用:

Copy
class BookListCrateView(GenericAPIView):
    # queryset = Book.objects.all()
    queryset = Book.objects
    serializer_class = BookModelSerializer

    def get(self, request):
        book_obj = self.get_queryset()
        serializer = self.get_serializer(instance=book_obj, many=True)
        return CommonResponse(results=serializer.data)

    def post(self, request):
        serializer = self.get_serializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            obj = CommonResponse(results=serializer.data)
        else:
            obj = CommonResponse(2000, '失敗', error=serializer.errors)
        return obj


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM