我正在使用Django for Google App Engine和djangoappengine库构建一个Web应用程序。我坚持通过管理界面获取图片上传工作。我的models.py
是:
class Bio(models.Model):
name = models.CharField(max_length=25)
about = models.TextField()
email = models.TextField()
pic = models.ImageField(upload_to="img/bios/", null=True, blank=True)
当我尝试在本地和appspot网站上的默认管理界面中上传图像时,我得到:“ImportError:没有名为Image的模块”
但是! - 当我运行manage.py shell
时,我能够成功import Image
和from PIL import Image
,所以我不确定我在这里缺少什么。有什么想法吗?
答案 0 :(得分:2)
http://www.allbuttonspressed.com/projects/djangoappengine#field-types表示不支持ImageField。
尝试上传到blobstore(请参阅http://code.google.com/appengine/docs/python/blobstore/overview.html)。这基本上使用了一个存储图像的介入处理程序,将blob键而不是文件传回目标处理程序。
答案 1 :(得分:2)
Django的ImageField使用PIL检查上传的文件是否实际上是图像。问题是,PIL最初在AppEngine服务器上不可用,因此您必须改为使用AppEngine的Images API。
在谷歌搜索时,我找到了AppEngine的ImageField小部件的this implementation,它使用了google.appengine.api.images而不是PIL。
现在看起来像AppEngine支持Python 2.7上的PIL。因此,如果您在AppEngine上开发Python 2.7应用程序,您只需要在in app.yaml
上转换对PIL的支持