使用'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模型,并作为标准上传表单显示在网站上。
答案 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应该没问题。
我希望它有所帮助