我正在尝试在一个页面中显示多个图像(从数据存储中提取)。
这样做只显示1张图片......
class Stocks(db.Model):
ticker = db.StringProperty()
picture = db.BlobProperty(default=None)
我用什么来服务:
self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write(stock.picture)
这是我服务图片的唯一方法吗? 我可以用多种图像响应输出的方式来做吗? 像这样的东西。
self.response.out.write('<img src=' + stock.picture + '>')
更新:感谢您的回复。完全不知道你可以做那样的事情。
所以我这样做了:
app = webapp2.WSGIApplication([('/dailystocks', frontend_dailyStocks),('/image/.*', ServeImage),('/mainPage', MainPage)], debug=True)
然后这个:
class MainPage(webapp2.RequestHandler):
def get(self):
images = Stocks.all().fetch(100)
html = ['<img src="/image/%s" />' % img.key() for img in images]
self.response.out.write(html)
class ServeImage(webapp2.RequestHandler):
def get(self):
key = self.request.get('key')
image = Stocks.get(key)
if image:
self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write(image.picture)
else:
self.abort(404)
已加载的东西,但它显示了一个损坏的图像链接列表。
这是一个示例图片链接:
http://*****.appspot.com/image/ag9zfmpwZ2V0bGlzdGluZ3NyEwsSBlN0b2NrcxiAgICAwOGGCAw
答案 0 :(得分:4)
对于您要投放的每张图片,您需要单独的HTTP调用。因此,您可以编写一个处理器来处理图像,就像您建议的那样,如下所示:
class ServeImage(webapp2.RequestHandler):
def get(self):
key = self.request.get('key')
image = Stocks.get(key)
if image:
self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write(image.picture)
else:
self.abort(404)
然后在你的主处理程序中,加载图像并渲染html,在每个img标记中引用ServeImage处理程序......
class MainPage(webapp2.RequestHandler):
def get(self):
images = Stocks.all().fetch(100)
html = ['<img src="/image?key=%s" />' % img.key() for img in images]
self.response.out.write(html)
您需要将url / image路由到ServeImage处理程序。