如何在Django测试中提交图像上传?

6

Django文档(http://docs.djangoproject.com/en/dev/topics/testing/#django.test.client.Client.post)建议这样做:

>>> c = Client()
>>> f = open('wishlist.doc')
>>> c.post('/customers/wishes/', {'name': 'fred', 'attachment': f})
>>> f.close()

但是当我这样做时,该字段会显示错误消息“提交的文件为空”。这似乎是一个PIL问题,但在实际网站上表单运行正常。
读取文件并发送它而不仅仅是一个句柄也无法解决问题,并且与传递空字符串的行为相同。
2个回答

6

好的,我找到问题所在了。我在多个字段中使用了相同的虚拟图像,而Django在验证第一个字段后不会重置指针。

另外,文档中的示例也没有显示需要以二进制模式打开图像。


希望你已经搜索或打开了一个工单来修复文档中的示例 ;) - SmileyChris

0

我认为open期望一个相对于调用它的位置的文件路径。

当测试运行时,我不确定它在哪里,但是也许尝试使用绝对路径看看是否有效?


我正在使用绝对路径,图片可以正常打开。 - Kyle MacFarlane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接