Django的POST在request.body数据,但在变量不能存放

问题描述 投票:2回答:3

我张贴一些生JSON我的后台

{
    "access_token": "hU5C7so4reJOYTzPyhKPs8PWq07tb",
    "id": 3,
    "order_details": [{"meal_id": 1, "quantity": 3}, {"meal_id": 2, "quantity": 2}]
}

然而,当我尝试

print (request.POST.get("access_token")) 

我收到None

但是,当我做

print (request.body)

的价值观似乎有: b'{\n\t"access_token": "hU5C7so4reJOYTzPyhKPs8PWq07tb",\n\t"id": 3,\n\t",\n\t"order_details": [{"meal_id": 1, "quantity": 3}, {"meal_id": 2, "quantity": 2}]\n}'

我使用的邮差发布的数据。

我想访问令牌存储到像这样的一些变量:

access_token = request.POST.get("access_token")

与POST数据

我仍然相当新的Django的,任何帮助将是巨大的。

python django
3个回答
2
投票

只是做了json.loads应该工作。

import json

json_data = json.loads(request.body)

1
投票

当你发送表单数据Request.POST被填充。见django docthis answer了解详情。因为,你的情况,你要留言“纯” JSON,你会发现在你的request.body有效载荷。您可以按如下的身体从二进制解码为字典:

import json

body = json.loads(request.body.decode('utf-8'))
access_token = body.get("access_token")

0
投票

您需要将JSON第一解码:

import json
variable = urlopen(request).read().decode('utf-8')
json_obj = json.loads(variable)

然后你可以检索您的信息

for i in json_obj:
   token = i['access_token']
   order_details = i['order_details']

希望这有助于

© www.soinside.com 2019 - 2024. All rights reserved.