Django无法在内部服务器错误上解析WSGIRequest的POST参数

时间:2014-07-10 11:08:55

标签: json django django-rest-framework

我正在使用Django REST Framework,所有API调用都来自Android和iOS应用。系统在大多数情况下都能正常运行,但是,当发生内部服务器错误并且我收到来自Django的电子邮件时,POST的{​​{1}}包含WSGIRequest而不是实际发布的JSON数据(即使<could not parse>也在标题中,数据也以JSON格式发送。)

这真的很烦人,因为很高兴看到实际导致错误的请求体,而不仅仅是堆栈跟踪。

'CONTENT_TYPE': 'application/json'部分非常与此问题类似(在<could not parse>部分中):django request.POST contains <could not parse>,但实际问题略有不同。此问题(https://stackoverflow.com/questions/12471661/mod-python-could-not-parse-the-django-post-request-for-blackberry-and-some-andro)中的参考链接似乎已经下降,即使名称看起来很有希望。

我在使用Django 1.6.2和DRF 2.3.13。

2 个答案:

答案 0 :(得分:6)

POST的{​​{1}}字典始终无效,因为它旨在在WSGIRequestContent-Type或{{时保留已解析的表单数据1}}。

您想要的数据位于application/x-www-form-urlencoded对象的multipart/form-data属性中,当该对象转换为要写入日志的字符串时,不会输出该数据。

答案 1 :(得分:3)

使用Django REST框架时,通常需要访问request.DATA(它将处理解析器配置的任何格式 - 默认为形成内容和JSON)而不是Django的标准request.POST,只处理表格编码数据。