2013-02-02 49 views
2

我有一个图像数据库。我想使用jinja2模板在数据库中显示所有图像。在GAE上使用jinja2显示图像

我送的数据库对象如下:

class Default_tiles(db.Model): 
    name = db.StringProperty() 
    image = db.BlobProperty(default=None) 


class MainPage(webapp2.RequestHandler): 
    def get(self): 

    # get all the default tiles in the database 
    default_tiles_query = Default_tiles.all() 
    defaultTiles = default_tiles_query.fetch(10) 

    template_values = { 
     'defaultTiles': defaultTiles # contain all the defaut tiles to be displayed 
    } 

    template = jinja_environment.get_template('index.html') 
    self.response.out.write(template.render(template_values)) 

的Jinja2的模板在Default_tiles每个对象,以显示每个图像是:

<body> 
    {% for defaultTile in defaultTiles %} 
    {{ defaultTile.image }} 
    {% endfor %} 
</body> 

当这个运行出现以下错误日志:

文件“/ Users/jamiefearon /桌面/开发/我的程序/ GAE功能齐全的网站与CSS,JavaScript和图像/ index.html ”第24行,在顶层模板代码 {{defaultTile.image}} UnicodeDecodeError错误:在位置0 '的ASCII' 编解码器不能解码字节0x89上:顺序不在范围内(128)

我怀疑我正在做一些错误的行{{ defaultTile.image }}

谢谢大家的帮助。

回答

4

您不能将二进制数据转换为html并显示图像,您需要使用IMG元素显示图像。

您需要使用处理程序提供图像或使用inline base64 data显示图像。

+0

谢谢。你知道我能看到的任何例子来更好地理解如何做到这一点吗?即如何在数据存储中显示数据库中的所有图像 –

+0

https://developers.google.com/appengine/articles/python/serving_dynamic_images –