2016-09-23 105 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主體),則似乎更好。