解决了请看我的答案。
与POST
一起发送的任何Content-Type: multipart/form-data; boundary=xYzZY
请求都会导致request.POST
QueryDict{}
为空。将Content-Type
更改为multipart/form-data
也会导致相同的错误。
删除Content将导致值被正确传递,我可以在request.POST
中访问它们。
我已经尝试过禁用Csrf中间件,使用@csrf_exempt,并且在多个服务器上也尝试了同样的方法。没有改变空的岗位条件。
在阅读Django框架和POST内容类型时,我看到它(不再)假定为默认的内容类型,因此必须提供正确的内容类型(我没有相关文章的链接)。我认为这里也发生了类似的事情,django无法用给定的内容类型解析参数(但保留空白让解析器用默认值解释它)。
我遇到的问题是,所提供的内容类型值是完全有效的(具有边界的多部分/表单数据)。那么为什么django拒绝在POST字典中加载它呢?
**我没有控制发送到POST数据中的内容类型。
** UPDATE:从request.body
读取显示正在接收所有POST
参数。他们只是不存在于request.POST
** UPDATE:我正在使用运行范围测试POST
请求。
发布于 2015-05-26 15:26:39
正如更新中提到的,我使用运行范围来测试POST
数据。我意识到,这个错误与运行范围处理multipart/form-data
的方式有关。我提出了这个问题的支持,并得到通知,运行范围不支持多部分,到目前为止。我在这里复制了相关信息:
我们希望在未来支持多部分表单上传功能,但对于何时可用还没有时间表。一些客户在他们的雷达测试(https://www.runscope.com/docs/radar)中完成了这项工作,方法是将原始的多部分格式化正文或unicode字符串输入体粘贴到请求中,并确保包含具有正确边界的适用的“内容类型”标头值。构建多部分/表单数据POST请求的一些示例可以在这里找到:93bf.html 对于运行域URL,多部分数据通过未修改的方式传递。但是,来自流量检查器(https://www.runscope.com/docs/inspector)的请求编辑器和重试目前不支持多部分数据,这就是请求重试无法工作的原因。此外,大于1MB的请求和响应体不会在发送请求后保存以供查看。
用另一种服务帮我解决了这个问题。
发布于 2015-05-26 14:52:39
您(在某种程度上)控制着Content-Type
。你要找的是enctype
。您可以使用它如下:
<form method="POST" action="." enctype="multipart/form-data">
只有在上传文件时才需要enctype
,否则就不需要了。
https://stackoverflow.com/questions/30458357
复制相似问题