首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内容的request.POST空.类型:多部分/表单-数据;boundary=xYzZY

内容的request.POST空.类型:多部分/表单-数据;boundary=xYzZY
EN

Stack Overflow用户
提问于 2015-05-26 12:17:08
回答 2查看 2.1K关注 0票数 0

解决了请看我的答案。

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请求。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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的请求和响应体不会在发送请求后保存以供查看。

用另一种服务帮我解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2015-05-26 14:52:39

您(在某种程度上)控制着Content-Type。你要找的是enctype。您可以使用它如下:

代码语言:javascript
运行
复制
<form method="POST" action="." enctype="multipart/form-data">

只有在上传文件时才需要enctype,否则就不需要了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30458357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档