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>

これを実行すると、次のエラーログが表示されます。

ファイル"/Users/jamiefearon/Desktop/Development/MyPrograms / GAE完全に機能するウェブサイト、css、javascript、images / index.html"、24行目、トップレベルのテンプレートコード{{defaultTile.image}} UnicodeDecodeError:'ascii 'コーデックは位置0のバイト0x89をデコードできません:順序が範囲内にありません(128)

回線に問題があるのではないかと思います{{ defaultTile.image }}

助けてくれてありがとう。

4

1 に答える 1

4

バイナリデータをhtmlにスローして画像を表示するだけではなく、 IMG要素 を使用して画像を表示する必要があります。

ハンドラーを使用して画像を提供するか、インラインbase64データを使用して画像を表示する必要があります。

于 2013-02-02T17:52:02.713 に答える