关于谷歌应用引擎:在GAE上使用jinja2显示图像

Displaying an image using jinja2 on GAE

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

我发送数据库对象如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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模板是:

1
2
3
4
5
<body>  
  {% for defaultTile in defaultTiles %}
    {{ defaultTile.image }}
  {% endfor %}
</body>

运行此命令时,我会得到以下错误日志:

文件"/users/jamiefearon/desktop/development/my programs/gae全功能网站,包含css、javascript和images/index.html",第24行,顶级模板代码123; defaultTile.image_unicodedecodeerror:"ascii"编解码器无法在位置0解码字节0x89:序号不在范围(128)内。

我怀疑我对{{ defaultTile.image }}行做了一些错误。

谢谢大家的帮助。


你不能只将二进制数据放入HTML并显示图像,你需要使用img元素来显示图像。

您需要使用处理程序服务您的图像,或者使用内联base64数据显示图像。