Django QueryDict变量,通过application-form-post传递,如何获取变量?

时间:2015-05-21 13:57:47

标签: python django

我试图从一台服务器获取一些变量,这台服务器不是我的,我收到这样的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

2 个答案:

答案 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'