2017-04-15 23 views
0

我想使用客戶端傳遞字典到函數。它看起來像:SimpleUploadedFile將不會POST

response = self.client.post(
     '/upload_image/', {'image': image, 'tags': ['orion', ]}) 

在我看來,它的發佈數據,我有:

print(request.POST) 
image = request.POST['image'] 
tags = reguest.POST['tags'] 

上有request.POST [ '形象']一個MultiValueDictKeyError。

print(request.POST)表明,字典的樣子:

<QueryDict: {'tags': ['orion']}> 

圖像對象是:

image = SimpleUploadedFile(
      'kitties.png', b'kitties_in_boxes', 'image/png') 

這是關於圖像對象,因爲當我通過別的東西作爲圖像(例如一個字符串)它效果很好。

我想還有另外一種方式可以測試上傳圖片的功能,但是有人知道爲什麼這樣不起作用嗎?

+0

檢查您的窗體中的enctype它必須是enctype =「multipart/form-data」 – Quentin

+0

@Quentin如果沒有窗體,我該怎麼辦?這只是測試方法 - 查看方法 – Ginko

回答

1

Django從其他提交的數據中分離上傳的文件。 tags密鑰在request.POST中退出,但image應在request.FILES中。從我所看到的,你正在做的是用測試客戶端測試文件上傳的正確方法。

More info on forms and files in django

+0

好的,謝謝。我會檢查 – Ginko