我在从数据库中获取图片并在我的网页上显示时遇到了一些问题。
首先,我使用的是mongoengine
,所以这里(部分)是models.py
:
class Picture(EmbeddedDocument):
image = ImageField()
class Post(Document):
...
comments = ListField(EmbeddedDocumentField('Comment'))
user = ReferenceField('User', reverse_delete_rule='CASCADE')
images = ListField(EmbeddedDocumentField('Picture'))
以下是我保存图片的view
中的代码:
picture = Picture()
with tempfile.TemporaryFile() as f:
f.write(file.read())
f.flush()
f.seek(0)
picture.image.put(f)
picture.save()
post.images.append(picture)
post.save()
因此,在HTML页面中,我有以下内容:
<p>{{ post.images[0].image }}</p>
<img src="{{ post.images[0].image }}">
第一行输出:<ImageGridFsProxy: None>
。显然,第二个没有输出有效的图像。
以下是我在mongo shell中db.post.find(...)
时得到的内容:
{ "_id" : ObjectId("56325c4e66b3f6bf8beb9e03"), ... "images" : [ { "image" : ObjectId("56325c4e66b3f6bf8beb9e04") } ] }
有人可以帮我吗?
谢谢!
答案 0 :(得分:1)
我相信你应该这样做:
class Picture(EmbeddedDocument):
image = ImageField()
class Post(Document):
...
comments = ListField(EmbeddedDocumentField('Comment'))
user = ReferenceField('User', reverse_delete_rule='CASCADE')
images = ListField(EmbeddedDocumentField('Picture'))
要存储图片,请将图片附加到post.images
集合并致电post.save()
。