有時候咱們使用drf的Response,會發現默認返回的格式不太友好,每次咱們都須要寫入如下的格式前端
return Response({ "status": 0, "message": "成功", "results": serializer.data })
這樣會很是麻煩,咱們想默認就有status和message,因此咱們能夠二次封裝response
ide
咱們在項目的目錄中新建一個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" }