[英]Accessing nested objects in django POST request using python 3
我在從ajax發布調用訪問嵌套對象時遇到一些麻煩。 這是我的js:
$.ajax({
url: "/api/locate/",
type: "POST",
data: {start:
{
latitude: position.coords.latitude,
longitude: position.coords.longitude
}
},
dataType: 'json',
contentType: "application/x-www-form-urlencoded",
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && sameOrigin(settings.url)) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
console.log(start);
},
success: function(data) {
console.log(data);
}
})
在我看來,檢索數據的唯一方法是執行以下操作:
latitude = request.POST['start[latitude]']
longitude = request.POST['start[longitude]']
考慮到我最想以包含緯度和經度鍵的字典作為開始,這有點不好。 我確實意識到這種格式是由於內容類型設置為“ application / x-www-form-urlencoded”,但是當我將其更改為“ application / json”時,必須從request.body解碼數據:
decoded = request.body.decode('utf8')
data = json.loads(decoded)
反過來會引發以下ValueError:
期望值:第1行第1列(字符0)
解碼后的字符串為:
起始%5B0%5D%5Blatitude%5D = 31.736784000000004&啟動%5B0%5D%5Blongitude%5D = -106.473027
你們中的任何人在正確加載嵌套對象方面是否有運氣,還是我堅持使用第一種方法?
編輯:使用Django 1.6.2和python 3.4
發送JSON數據時,請在對象上使用JSON字符串。
data: JSON.stringify({start:
{
latitude: position.coords.latitude,
longitude: position.coords.longitude
}
})
如果將普通對象作為數據傳遞, 則無論您聲明為Content-Type為何, 它都會轉換為查詢字符串 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.