我有一個 Django 視圖,它返回一個對象列表,或者允許您在 POST 時創建一個對象...@csrf_exemptdef quantities(request): if request.method == "POST": kwargs = {**request.POST} print(request.POST) quantity = Quantity.objects.create(**kwargs) return JsonResponse({"quantity": f"/quantities/{quantity.id}/"}) return JsonResponse([], safe=False)如果它收到一個 GET 請求,它會返回一個數量列表(代碼未顯示),這可以正常工作,如果它收到一個 POST 請求,它會使用 POST 數據來創建一個新的數量。(我知道 DRF 為您完成了所有這些工作,但是對于我的第一個 API,我想嘗試手動完成它 - 這樣您就可以更好地理解它。)無論如何,在我的測試中,我使用請求來檢查它是否有效......response = requests.post( self.live_server_url + f"/quantities/", data={ "name": "Height", "units": "m", "description": "Human Height" })這不起作用 - 它不傳遞任何數據。這print在上面剛剛打印的觀點陳述<QueryDict: {}>。出于某種原因,我放入請求中的 POST 數據在它通過所有中間件并到達視圖時已經從請求中消失了。我唯一能想到的是@csrf_exempt裝飾器正在刪除 POST 數據,盡管我無法想象為什么。我查看了它的源代碼,它似乎沒有這樣做,但我無法檢查,因為刪除裝飾器意味著視圖只返回 403 響應。我的 POST 數據去哪里了?
2 回答

GCT1015
TA貢獻1827條經驗 獲得超4個贊
所以事實證明,由于某種原因,我的請求有一個標頭這一事實"Content-Type": "application/json"
使 Django 無法從請求正文創建一個 POST 字典。我不知道為什么,但刪除該標題解決了這個問題。
添加回答
舉報
0/150
提交
取消