2014-03-31 52 views
0

我試圖在一個頁面中顯示多個圖像(從數據存儲區拉出)。GAE python在頁面上顯示多個圖像

這樣做只能顯示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

要記住的是你只能得到一個:self.response.out.write –

回答

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處理程序。

+0

不。WSGIApplication構造函數的參數是一個元組列表。您需要將另一個元組添加到列表中。 –

+0

是的,圖片仍然顯示爲一張破碎的圖像... ['brokenImageicon','brokenImageicon'] – user3211229

+0

是否調用ServeImage處理程序? –

相關問題