[問題] django抓不到POST的資料

看板Python作者 (kajm)時間9年前 (2016/04/21 22:35), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
各位前輩好, 這兩天用django在練習,寫了一隻用ajax以POST方式送表單的程式, 可是不知道為什麼,雖然在瀏覽器(Chrome)可以看到POST傳出去的資料是正確的, 但是在程式讀取時卻發現request.POST是一個空的dictionary 大致的程式碼如下: AJAX: var name = $("input#Name").val(); var id = $("input#Id").val(); $.ajax({ url: "register", type: "POST", dataType: "json", contentType: "application/json", data: { id: id, name: name }, success: function(result){ ....(此處正常執行).... } error: fuction(){ .... } 基本上上面的程式碼都是可以正常運作的, 在瀏覽器的開發工具內可以看到資料都有出現。 view.py: .... from django.views.decorators.csrf import csrf_protect .... @csrf_protect def register(request): if request.method == 'POST': if request.is_ajax(): id = request.POST.get('id') name = request.POST.get('name') .... 略 另外還有設定csrf_token,看起來應該都有正常運作 設定方式是在ajax程式碼之前加上下面這一段: var csrftoken = $.cookie('csrftoken'); function csrfSafeMethod(method) { return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); } $.ajaxSetup({ beforeSend: function(xhr, settings) { if (!csrfSafeMethod(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", csrftoken); } } }); 在form裡面也有寫{% csrf_token %} 看起來應該是可以順利執行,但是資料POST之後就消失了... 求各位前輩指點,謝謝>< -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.113.50 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1461249357.A.CDE.html

04/22 00:35, , 1F
POST json format 的話用 request.body 內找找
04/22 00:35, 1F

04/22 01:22, , 2F
感謝大大,可以順利抓到資料了!但是他不是以json的格式傳過
04/22 01:22, 2F

04/22 01:22, , 3F
來,而是用&分割,例如:id=1&name=kajm這樣..請問是不是我
04/22 01:22, 3F

04/22 01:23, , 4F
忽略了什麼參數設定呢QQ
04/22 01:23, 4F

04/22 01:40, , 5F
剛剛JSON.stringify(data)的方式轉換成功了!再次感謝 :)
04/22 01:40, 5F

04/22 02:38, , 6F
呃,contentType 即使是 json 還是會傳 query string吧
04/22 02:38, 6F
文章代碼(AID): #1N6ELDpU (Python)
文章代碼(AID): #1N6ELDpU (Python)