2011-06-07 228 views
3

使用'Photologue',我可以将图像作为表单的一部分上传没有问题。然而,在测试计划中,我无法获取图像进行验证。Django - 测试上传图像

在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()命令。 “图片”字段是photologue的ImageModel模型,并以网站上的标准上传形式出现。

+0

为什么像场是一个模型,但不是*的ImageField *?你确定你的表单处理参数'data_photo'的构造函数吗?你为什么试图在服务器'body_dg.jpg'上打开文件? – sergzach 2011-06-07 10:17:41

+0

你是什么意思?上面这个表单示例中的'image'字段是ImageField的photologue应用程序中ImageModel的一部分。 – Jamie 2011-06-07 10:53:47

回答

0

您是否尝试使用bmp而不是jpg?

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

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

我希望它能帮助

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}) 
2

您需要使用开放文件 'RB' 选项:

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

这在Django 1.6.X中不起作用,它为您工作的版本是什么? – radtek 2014-10-08 01:30:30