给定的是使用tipfy(python)以下模型的gae:
greeting.avatar = db.Blob(avatar)
显示 blob 的模板标签是什么(这里是图片)?
在这种情况下,blob 是一个图像,这很棒。只需使用images.get_serving_url(blob_key)
,您就会很高兴。我用过这个功能,相信我,它非常适合提供图像。只需附加到您想要的像素大小=sxx
的网址。xx
它会自动调整图像大小并提供服务。
如果 blob 不是图像,那么您很不走运,没有一个简单的出路。也许使用BlobReader
来制作字符串表示并输出它?
但是,如果它不是图像或文本,您可能想要写入 HTML 什么?
没有用于显示这样的任意数据的内置模板标签。我可以想到两种方法:
编写一个请求处理程序,将头像作为图像提供。根据您的示例,请求处理程序只需要查找问候语以获取图像数据,发送适当的Content-Type: image/jpeg
(image/png
或其他)标头,然后将 blob 数据写入响应流。
然后,在您的模板中,您将显示如下图像:
<img src="/show-avatar/{{ greeting.key().id() }}">
编写一个自定义模板标签/模板过滤器,它接受 blob 数据并生成一个适当的数据 URL,它将直接在您生成的 HTML 文档中对图像数据进行编码。
然后,在您的模板中,您将显示如下图像:
<img src="{{ greeting.avatar|dataurl }}">
这将导致在模板中沿这些行输出:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" />