2016-09-23 100 views
1

我想将数据发布到我的API。我有一个image领域的模型,其中:“使用POSTMAN发布图像数据”

image = models.ImageField() 

我在我的本地对话框,我想送有一个形象。我发送正确吗?

{ 
    "id": "3", 
    "uid":"273a0d69", 
    "uuid": "90", 
    "image": "@/home/user/Downloads/tt.jpeg" 
} 

回答

10

这不是你如何发送邮递文件。你所做的是发送一个字符串,这是你的图像的路径,仅此而已。

你应该做的是;

  1. 将请求方法设置为POST后,单击“body”选项卡。
  2. 选择表格数据。在第一行,您会看到名为key和value的文本框。将'图像'写入密钥。您会看到默认情况下设置为“文本”的值类型。将其设为文件并上传您的文件。
  3. 然后选择'raw'并粘贴你的json文件。也就在二进制选项旁边,你会看到'文本'被点击。让它成为JSON。

form-data section

raw section

你准备好了。

在你的Django视图,

from rest_framework.views import APIView 
from rest_framework.parsers import MultiPartParser 
from rest_framework.decorators import parser_classes 

@parser_classes((MultiPartParser,)) 
class UploadFileAndJson(APIView): 

    def post(self, request, format=None): 
     thumbnail = request.FILES["file"] 
     info = json.loads(request.data['info']) 
     ... 
     return HttpResponse() 
+0

你好有一种方法可以实现嵌套图像, 即{model:{image:file}} – Babbz77

+0

我在请求中得到一个''detail:“不受支持的媒体类型\”application/json \“。一个415 HTTP状态码。任何想法? – MarAja

+0

你在邮递员上测试它吗? –

1

如果你设置了JSON作为form-data面板一键/值对接受的答案工作(见下文图片)

enter image description here

不过,我想知道它是否是设计API的一种非常干净的方式。如果您强制要求在一次调用中同时上传图片和JSON,则可能是好的,但如果您可以分开路线(一个用于图片上传,另一个用于带有适当内容类型标头的JSON主体),则似乎更好。