3

与えられたのは、tipfy (python) を使用した gae で、次のモデルです。

greeting.avatar = db.Blob(avatar)

ブロブを表示するためのテンプレートタグは何ですか (ここの画像)?

4

2 に答える 2

2

この場合、ブロブは画像です。これは素晴らしいことです。使うだけimages.get_serving_url(blob_key)で幸せ。私はこの関数を使用しましたが、信じてください。画像を提供するのに最適です。必要なピクセル サイズを=sxxURL に追加するだけです。xx画像のサイズを自動的に変更して提供します。

ブロブが画像でない場合は、簡単な方法でうまくいきません。を使用しBlobReaderて文字列表現を作成し、出力しますか?

しかし、それが画像でもテキストでもない場合、HTML に何を書きたいと思うでしょうか?

于 2011-01-22T12:47:40.833 に答える
1

そのような任意のデータを表示するための組み込みのテンプレート タグはありません。私は2つのアプローチを考えることができます:

  1. アバターを画像として提供するためのリクエスト ハンドラーを記述します。あなたの例に基づいて、リクエストハンドラーはグリーティングを検索して画像データを取得し、適切なContent-Type: image/jpegimage/pngまたは何でも)ヘッダーを送信してから、BLOBデータを応答ストリームに書き込むだけで済みます。

    次に、テンプレートで、次のように画像を表示します。

    <img src="/show-avatar/{{ greeting.key().id() }}">
    
  2. blob データを取得して適切なデータ URLを生成するカスタム テンプレート タグ/テンプレート フィルターを記述します。これにより、生成している HTML ドキュメントで画像データが直接エンコードされます。

    次に、テンプレートで、次のように画像を表示します。

    <img src="{{ greeting.avatar|dataurl }}">
    

    これにより、テンプレートの次の行に沿った出力が得られます。

    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" />
    
于 2011-01-21T21:03:05.133 に答える