Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django在request.body中发布数据,但不能存储在变量中_Python_Django - Fatal编程技术网

Python Django在request.body中发布数据,但不能存储在变量中

Python Django在request.body中发布数据,但不能存储在变量中,python,django,Python,Django,我正在向我的后端发布一些原始JSON { "access_token": "hU5C7so4reJOYTzPyhKPs8PWq07tb", "id": 3, "order_details": [{"meal_id": 1, "quantity": 3}, {"meal_id": 2, "quantity": 2}] } 然而,当我试图 print (request.POST.get("access_token")) 我收到无 但是,当我这样做的时候 print (r

我正在向我的后端发布一些原始JSON

{
    "access_token": "hU5C7so4reJOYTzPyhKPs8PWq07tb",
    "id": 3,
    "order_details": [{"meal_id": 1, "quantity": 3}, {"meal_id": 2, "quantity": 2}]
}
然而,当我试图

print (request.POST.get("access_token")) 
我收到

但是,当我这样做的时候

print (request.body)
这里的价值观似乎是:

b'{\n\t“访问令牌”:“hU5C7so4reJOYTzPyhKPs8PWq07tb”,\n\t“id”:3、\n\t“,\n\t“订单详细信息”:[{“用餐id”:1,“数量”:3},{“用餐id”:2,“数量”:2}]\n}'

我正在使用邮递员来发布数据

我想将访问令牌存储到某个变量中,如下所示:

access_token = request.POST.get("access_token")
使用post数据


我还是Django的新手,任何帮助都会很好。

您需要先解码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']

希望这个帮助能起作用

import json

json_data = json.loads(request.body)

发送表单数据时,将填充Request.POST。 有关详细信息,请参见和。 因为在您的例子中,您发布的是“普通”json,所以您将在request.body下找到您的负载。 您可以将正文从二进制解码为dict,如下所示:

import json

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

Django不知道您正在发布JSON或任何其他格式。您需要解码您获得的数据。Google up
JSON。loads
body需要解码。否则您会得到TypeError:JSON对象必须是str,而不是“bytes”。这与此用例无关,后者是接收POST请求的后端端点。一些解释为什么会出现这种情况与其他答案相比,nswer是一个进步,这将有助于它。