SimpleUploadedFile不会发布POST

时间:2017-04-15 19:34:25

标签: python django django-testing

我想使用Client将字典传递给函数。它看起来像是:

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

在我看来,它向我发布的数据有:

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

请求时有一个MultiValueDictKeyError .POST [' image']。

print(request.POST)显示字典如下:

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

图像对象是:

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

关于图像对象,因为当我将其他东西作为图像传递时(例如字符串),它运作良好。

我认为还有另一种方法可以测试上传图片的功能,但有人知道为什么这不起作用吗?

1 个答案:

答案 0 :(得分:1)

Django将上传的文件与其他提交的数据分开。 tags密钥会在request.POST中退出,但image应位于request.FILES。从我所看到的,你正在做的是用测试客户端测试文件上传的正确方法。

More info on forms and files in django