2017-09-04 108 views
1

我正在使用django 1.8 rest api,如下所示。django rest框架 - 你不能訪問body

@api_view(['GET', 'POST']) 
@authentication_classes((TokenAuthentication, SessionAuthentication, BasicAuthentication)) 
@permission_classes((IsAuthenticated,)) 
@staff_member_required 
def api(request): 
    print request.data 

問題是它檢索所有參數爲字符串,所以我必須手動轉換數字和布爾值。

我試着使用:

print json.loads(request.body) 

但顯然Django的休息框架,從中會導致這個錯誤的數據流中讀取:

Error: RawPostDataException: You cannot access body after reading from request's data stream 

我也試過

json.loads(request.stream.body) 

因爲文檔說流應該工作。

有沒有一種方法可以檢索具有適當類型的請求發佈數據?

請注意,我使用ajax發送數據與JSON.stringify。

回答

1

您想在DRF中使用serializers。他們將允許您將模型實例轉換爲可以轉換爲JSON的本地Python數據類型,反之亦然。您也可以反序列化將哪些JSON字符串轉換爲複雜類型。

閱讀更多關於串行器here