亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django 的 csrf_exempt 裝飾器會刪除所有 POST 數據嗎?

Django 的 csrf_exempt 裝飾器會刪除所有 POST 數據嗎?

catspeake 2021-09-28 17:05:42
我有一個 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 字典。我不知道為什么,但刪除該標題解決了這個問題。


查看完整回答
反對 回復 2021-09-28
  • 2 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號