如何通过curl发送包含json对象和图像文件的multipart/form-data?我怎样才能用Django Rest Framework来对待它?

ale*_*he8 5 python django curl django-rest-framework

例如,我通过终端尝试了该命令:

curl -F "profileImage=@/home/user/image.jpg" -F "{'firstName':'hello'};type=application/json" http://127.0.0.1:8000/api/v1/signup/
Run Code Online (Sandbox Code Playgroud)

然后我收到了request这样的对象:

print request.FILES
# <MultiValueDict: {u'profileImage': [<InMemoryUploadedFile: image.jpg (image/jpeg)>]}>
print request.DATA
# <QueryDict: {u"{'firstName':'hello'};content-type": [u'application/json']}>
Run Code Online (Sandbox Code Playgroud)

图像没问题,但QueryDict没有正确表示 - 所有JSON文件都是键,内容类型是值.

在Django中使用这些解析器:

parser_classes = (MultiPartParser, FormParser, JSONParser,)
Run Code Online (Sandbox Code Playgroud)

我需要通过JSON结构发送文本数据.

ale*_*he8 0

谢谢 xjtian - 您在评论中粘贴的链接+一些研究提出了解决方案。所以:

  1. 如果您想发送 json 数据 + 文件 - 发送两个请求。首先将在后端创建对象并将 id 提供给应用程序。第二个将使用给定的 ID 用文件更新对象。更多信息在那里

  2. 如果您不关心数据类型 - 通过“multipart/form-data”发送请求。

感谢大家的回答,你们确实很有帮助,但我认为这个更适合 REST 架构。