2

我有一个图像数据库。我想使用 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))

在 Default_tiles 中显示每个对象中每个图像的 jinja2 模板是:

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

当它运行时,我得到以下错误日志:

顶级模板代码 {{ defaultTile.image }} UnicodeDecodeError: 'ascii ' 编解码器无法解码位置 0 中的字节 0x89:序数不在范围内(128)

我怀疑我的线路有问题{{ defaultTile.image }}

感谢大家的帮助。

4

1 回答 1

4

您不能只是将二进制数据放入 html 并显示图像,您需要使用IMG元素显示图像。

您需要使用处理程序提供图像或使用内联 base64 数据显示图像。

于 2013-02-02T17:52:02.713 回答