3

给定的是使用tipfy(python)以下模型的gae:

greeting.avatar = db.Blob(avatar)

显示 blob 的模板标签是什么(这里是图片)?

4

2 回答 2

2

在这种情况下,blob 是一个图像,这很棒。只需使用images.get_serving_url(blob_key),您就会很高兴。我用过这个功能,相信我,它非常适合提供图像。只需附加到您想要的像素大小=sxx的网址。xx它会自动调整图像大小并提供服务。

如果 blob 不是图像,那么您很不走运,没有一个简单的出路。也许使用BlobReader来制作字符串表示并输出它?

但是,如果它不是图像或文本,您可能想要写入 HTML 什么?

于 2011-01-22T12:47:40.833 回答
1

没有用于显示这样的任意数据的内置模板标签。我可以想到两种方法:

  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 回答