0

HTML頁面上的圖像我已創建的類Blogmodel.py並且它有一個屬性photo這是一個BlobkeyProperty。 我的問題是如何diplay HTML網頁上的照片。所有我得到的只是key.I不知道很多神社和python的,請幫助.. :)如何顯示在Python /神社

{% if blog.photo == None %} 
    <img src="static/css/img/photo.jpg" /><br/> 
{% elif blog.photo %} 
    <span>{{blog.photo.key.get()}}</span><br/> 
{% endif %} 

第一部分工作但其他部分現在給我

Internal Server Error(UndefinedError: 'google.appengine.api.datastore_types.BlobKey object' has no attribute 'key') 

如果我刪除key.get()一部分,那麼它給我的那張照片 普萊舍幫助blobkey ..

+1

使用get_serving_url創建一次從你的blob_key服務網址。這個服務網址可以在你的img標籤的src中使用。 Google文檔:https://cloud.google.com/appengine/docs/python/images/functions – voscausa

+0

非常感謝您,但我不太瞭解(甚至是從Google文檔中)如何正確使用它。!如果你能詳細闡述它,那將是非常好的。:) – Niraj

+0

你應該把你的視圖中的代碼添加到你的問題中,然後將圖像發送到模板。 – doru

回答

0

這是我從blobst處理圖像做礦石。

1處理器,以提供圖片:

class AvatarDownloadHandler(BaseHandler): 
    """ 
    Handler for Serve User's Avatar 
    """ 

    def get(self): 

     params = {} 

     if self.request.get('id') != '': 
      logging.info('loading image from id: %s' % self.request.get('id')) 
      user_info = self.user_model.get_by_id(long(self.request.get('id'))) 
      if user_info != None: 
       if user_info.picture: 
        self.response.headers['Content-Type'] = 'image/png' 
        self.response.out.write(user_info.picture) 
       else: 
        self.response.headers['Content-Type'] = 'text/plain' 
        self.response.out.write('No image') 
     else: 
      self.response.headers['Content-Type'] = 'text/plain' 
      self.response.out.write('No image ID') 

有了這個處理程序,然後在金賈/ HTML端只需要調用路由URL下載處理程序與ID參數,即:

指定路線:

RedirectRoute('/img/', handlers.AvatarDownloadHandler, name='img-download', strict_slash=True), 

JINJA/HTML使用:

<img src="/img/?id=5671617594130432"> 

1處理器上傳圖片:

class AvatarUploadHandler(BaseHandler): 
    """ 
    Handler for Edit User's Avatar 
    """ 
    @user_required 
    def post(self): 
     """ Handles upload""" 

     params = {} 
     if not self.user: 
      return self.render_template('home.html', **params) 
     if not self.form.validate(): 
      message = _(messages.saving_error) 
      self.add_message(message, 'danger') 
      return self.redirect_to('edit-profile') 
     picture = self.request.get('picture') 
     user_info = self.user_model.get_by_id(long(self.user_id)) 
     if user_info != None: 
      # Transform the image 
      avatar = images.resize(picture, width=200, height=200, crop_to_fit=True, quality=100) 
      user_info.picture = avatar 
      user_info.put() 
      message = _(messages.saving_success) 
      self.add_message(message, 'success') 
      self.redirect_to('edit-profile') 

     message = _(messages.saving_error) 
     self.add_message(message, 'danger') 
     return self.redirect_to('edit-profile') 


    @webapp2.cached_property 
    def form(self): 
     f = forms.AvatarForm(self) 
     return f 
+0

但是'NameError:name'BaseHandler'未定義',爲什麼?請幫幫我 – Gank