为什么这个Django表单抱怨“图像字段需要这个字段”?

时间:2011-06-07 09:46:04

标签: python django image forms

使用'Photologue',我可以上传图片作为表格的一部分没问题。但是,在测试计划中,我无法获得要验证的图像。

在tests.py中:

data_photo = {'competition': self.newcomp,  
                  'title': 'Rabbit',
                  'image': open('photocompetitions/static/img/body_bg.jpg'),
                  'flickr_id': '425258',
                  'description': 'A picture of a rabbit',
                  'location': 'POINT (5000 5000)',
                  'location_description': 'Just some random place',
                  'copyright': 'Copyright 2011'}
photoform = PhotoForm(data_photo)

一切正常,但“图像”字段失败,因为“此字段是必需的”。消息,所以我假设尽管open()命令没有收到它。 'image'字段是photologue的ImageModel模型,并作为标准上传表单显示在网站上。

3 个答案:

答案 0 :(得分:6)

您必须传递的图片不在data中,而是在表格的files参数中。

from django.core.files.uploadedfile import SimpleUploadedFile

img = open('photocompetitions/static/img/body_bg.jpg')
uploaded = SimpleUploadedFile(img.name, img.read())
photoform = PhotoForm(data_photo, files={'image': uploaded})

答案 1 :(得分:2)

您需要使用'rb'选项打开文件:

'image': open('photocompetitions/static/img/body_bg.jpg', 'rb')

答案 2 :(得分:0)

你尝试使用bmp而不是jpg吗?

我记得django测试框架加载PIL的方式存在问题。

在这种情况下可能无法正确启用jpg格式,但bmp应该没问题。

我希望它有所帮助