Django(53)二次封裝Response

前言

有時候咱們使用drf的Response,會發現默認返回的格式不太友好,每次咱們都須要寫入如下的格式前端

return Response({
      "status": 0,
      "message": "成功",
      "results": serializer.data
})

這樣會很是麻煩,咱們想默認就有status和message,因此咱們能夠二次封裝response
 ide

二次封裝Response

咱們在項目的目錄中新建一個response.py文件url

from rest_framework.response import Response


class APIResponse(Response):

    def __init__(self, data_status=0, data_msg='ok', results=None, http_status=None, headers=None, exception=False, **kwargs):
        # data的初始狀態
        data = {
            'statusCode': data_status,
            'message': data_msg
        }
        # data的響應數據體
        if results is not None:
            data['results'] = results
        # data的其餘數據
        data.update(kwargs)
        super().__init__(data=data, status=http_status, headers=headers, exception=exception)

  上述代碼對data字段復了初始值,statusCode值爲0,message值爲ok,而後判斷返回的內容中是否有results字段,有的話data數據中再返回一個results,最後判斷是否有額外的參數,好比咱們要返回一個token給前端,這樣之後咱們返回數據的時候,若是默認是成功的類型,只須要寫return APIResponse(results=serializer.data)便可rest

咱們這裏模擬返回一個token,代碼以下token

return APIResponse(results=serializer.data, token="123abcppp")

而後訪問url,能夠看到返回的結果就會增長tokenit

{
    "statusCode": 0,
    "message": "ok",
    "results": {
        "id": 4,
        "name": "test",
        "age": 18,
        "sex": 1
    },
    "token": "123abcppp"
}
相關文章
相關標籤/搜索