【发布时间】:2018-07-22 23:37:17
【问题描述】:
我在使用 Python 3.5 的 Django 应用程序中接收 POST 请求(不是来自 Web 表单,而是来自 Unity 应用程序)。我的目标是发送图像数据。我可以确认 Unity 正确地生成了图像,并且根据他们的文档,我正确地发送了它。
POST 请求到达我的本地服务器,但无论我如何构建来自 Unity 的请求,Django request.POST 和 request.FILES 始终为空。但是,如果我将request.body 读入.txt 文件,我可以看到看起来完全正常的请求:
--pGBzDSypIQO4aFVbs4sjTmbBN5OpW3Huawm0D0ib
Content-Disposition: file; name="drawing"; filename="drawing.png"
Content-Type: multipart/form-data
‰PNG
IHDR ð ð :R¼ IDATxìØÁ 0±¶ûïœÐ1”
// etc...
还尝试了其他标头或发送虚拟 POST 数据。即使是最简单的表单数据也无法填充request.POST:
--hwlDqmtVKZ2EPkOJ7GuauDZNlYdE4nf4yNbGt9WR
Content-Disposition: form-data
Content-Type: text/plain; encoding=utf-8
a=b
这在其他人看来是不是格式不正确?据我所知,无论我如何发送东西,Django 的request.POST 都不会填充。有什么建议?这些请求中有什么不合适的地方吗?了解 Django 请求 需要 的外观以便可读吗?很想知道,谢谢!
【问题讨论】:
-
对我来说也是正确的。您是否可以尝试使用 PostMan Chrome 扩展程序将数据发送到您的服务器并检查 request.POST 是否仍然没有填充?
-
您对整个请求使用什么内容类型?它必须是
multipart/form-data。 -
谢谢你们的建议!
request.content_type是multipart/form-data和request.method是POST。然后在request.body中,我可以将图像字段内容类型设置为该类型或image/png,但得到相同的结果。我已经发送了一些带有 Postman 的通用数据,应用程序认为这很好,并按预期将其转换为QueryDict... -
还使用 Postman 将图像文件发送到 Django 服务器,并按预期将其提供到 request.POST 和 request.FILES 中的 QueryDict 中,但即使是最简单的 Unity 请求也会被绑定为原始字节[] 数据在他们的 request.body 对象中。它可能与从 Unity 发送的编码有关?仍在工作。
-
抱歉垃圾邮件 cmets -- 这里是来自 requestbin 的 an image of the Unity request。看出什么不对了吗?
标签: python django http request