簡體   English   中英

使用python 3訪問Django POST請求中的嵌套對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM