我试图从一台服务器获取一些变量,这台服务器不是我的,我收到这样的POST:
<QueryDict: {"'data[id]': ['83A0C50B5A0A43AD8F60C1066B16A163'], 'data[status]': ['paid'], 'event': ['invoice.status_changed']": ['']}>
以下是代码:
def get_iugu_retorno(request):
d1 = request.POST
d2 = d1.get['data[id]']
我需要获取数据[id],数据[状态]和事件......但是Django似乎得到所有这些信息,比如一个flattern字符串而不是Dict。
解决这些问题的最佳方法是什么?
我也尝试创建一个列表:
d2 = d1.getlist('data')
什么都没有...
我正在使用Django 1.8
答案 0 :(得分:2)
这根本不是表单编码数据,因此您无法像访问它那样访问它。它似乎是JSON的一种形式。所以你需要直接访问帖子体。
d1 = json.loads(request.body)
d2 = d1.get('data[id]')
答案 1 :(得分:1)
您是正确的假设data[id]
是密钥的名称,而不是列表,但您只是以错误的方式访问QueryDict(get[]
,它是get()
)。以下代码工作正常:
from django.http import QueryDict
qd = QueryDict('data[id]=83A0C50B5A0A43AD8F60C1066B16A163&data[status]=paid&event=invoice.status_changed=')
qd.get('data[id]')
>>> u'83A0C50B5A0A43AD8F60C1066B16A163'