簡體   English   中英

Django 返回一個數組而不是一個字典(rest-api-framework

[英]Django returns an array instead of a dictionary (rest-api-framework

我發送一個帶有數據的發布請求(使用requests.post('url', data=data) ):

data = {
       'token':1234,
       'data':{
             'name':'test',
             'etc':True,
              }
       }

在 django 中處理reguest.POST時,我得到:

<QueryDict: {'token':[1234], 'data':['name', 'etc']} >

可能是什么原因?

可能是什么原因?

這就是QuerDict的簡單表示方式。 這是因為在查詢字符串和 HTTP header 中,相同的鍵可以出現多次 因此,它將鍵映射到值。

如果您下標項目 [Django-doc] ,例如request.POST['token']它將始終返回最后一個元素,如果您使用.getlist(…) [Django-doc] ,它將返回所有項目的列表:

request.POST['token']          # 1234
request.POST.getlist('token')  # ['1234']

此外,正如您所發現的,您不能將字典作為值傳遞。 如果要發送它,則需要將其序列化,例如作為字符串:

import json

data = {
    'token':1234,
    'data': json.dumps({
        'name':'test',
        'etc':True,
    })
}

然后在接收端,您可以反序列化這些:

import json

json.loads(request.POST['data'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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