我正在使用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。
答案 0 :(得分:6)
POST
的{{1}}字典始终无效,因为它旨在在WSGIRequest
为Content-Type
或{{时保留已解析的表单数据1}}。
您想要的数据位于application/x-www-form-urlencoded
对象的multipart/form-data
属性中,当该对象转换为要写入日志的字符串时,不会输出该数据。
答案 1 :(得分:3)
使用Django REST框架时,通常需要访问request.DATA
(它将处理解析器配置的任何格式 - 默认为形成内容和JSON)而不是Django的标准request.POST
,只处理表格编码数据。