当前位置: 首页 > 面试题库 >

试图从Django的POST解析`request.body`

苗学民
2023-03-14
问题内容

由于某种原因,我无法弄清楚为什么Django无法request.body正确处理我的内容。

它以JSON格式发送,查看Network开发工具中的选项卡将其显示为请求有效负载:

{creator: "creatorname", content: "postcontent", date: "04/21/2015"}

这正是我希望将其发送到我的API的方式。

在Django中,我有一个接受此请求作为参数的视图,仅出于测试目的,应将其打印request.body["content"]到控制台。

当然,什么都没有打印出来,但是当我打印时request.body我得到了:

b'{"creator":"creatorname","content":"postcontent","date":"04/21/2015"}'

所以我知道我 确实 有尸体被寄出。

我尝试json = json.loads(request.body)也无济于事。json设置该变量后打印也不会返回任何内容。


问题答案:

在Python 3.0至Python
3.5.x中,json.loads()它将仅接受unicode字符串,因此您必须先解码request.body(这是一个字节字符串),然后再将其传递给json.loads()

body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
content = body['content']

在Python
3.6中,json.loads()接受bytes或bytearrays。因此,您不需要解码request.body(假设它以UTF-8,UTF-16或UTF-32编码)。



 类似资料:
  • 问题内容: 由于某种原因,我无法弄清楚为什么Django无法正确处理我的内容。 它以JSON格式发送,查看Network开发工具中的选项卡将其显示为请求有效负载: 这正是我希望将其发送到我的API的方式。 在Django中,我有一个接受此请求作为参数的视图,仅出于测试目的,应将其打印到控制台。 当然,什么都没有打印出来,但是当我打印时request.body我得到了: 所以我知道我确实有尸体被寄出

  • 问题内容: 我有一个带有几个视图的django应用程序,这些视图通过POST请求接受json对象。json对象是中等复杂的,具有几层嵌套,因此我正在使用json库解析raw_post_data,如下所示: 接下来,我要为这些视图编写测试。不幸的是,我不知道如何将json对象传递给客户端。这是我的代码的最简单的版本: 当我运行测试时,它失败并显示: 如何在Client.post方法中传递JSON对象

  • 我试图在Angular中发出请求,我知道HTTP响应不是在JSON中,而是在文本中。但是,Angular似乎期待一个JSON响应,因为错误如下: SyntaxError:JSON中XMLHttpRequest.c的JSON.parse()位置0处的意外标记< 我认为足以使Angular expect得到非JSON响应。

  • 问题内容: BaseHTTPServer模块中的BaseHTTPHandler似乎没有提供任何方便的方法来访问http请求参数。从路径解析GET参数和从请求正文解析POST参数的最佳方法是什么? 现在,我正在将它用于GET: 这适用于大多数情况,但是我想要更强大的功能,可以正确处理编码和类似空参数的情况。理想情况下,我想要的是小型独立的产品,而不是完整的Web框架。 问题答案: 您可以尝试使用We

  • 我试图向服务器发出POST请求,但我遇到了一个问题。服务器似乎收到了请求,但我仍然在控制台中看到一个错误,建议将主体从Object更改为JSON 错误:SyntaxError:JSON中位于JSON位置0处的意外标记A。在XMLHttpRequest处解析()。装载(http://localhost:4200/vendor.js:69142:51)text:“它是用id=:23保存的新用户”pro

  • 本文向大家介绍Django REST framework 单元测试实例解析,包括了Django REST framework 单元测试实例解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Django REST framework 单元测试实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 环境 Win10 Python3.7