2012-07-22 29 views
0

好的,首先我要聲明這是通過Python的Google App Engine。個人資料照片消失。 Mystery here - GAE(Python)

任誰,

這是我的處理程序/路由問題出在哪裏正在發生。請閱讀以下的背景和細節:

class GetImage(MainHandler): 
    def get(self): 
     img = db.get(self.request.get("entity_id")) 
     self.response.out.write(img.image) 

class Profile(MainHandler): 
    def get(self, profile_name): 
     current_user = str(self.user.name) 
     profile_name = current_user 
     if self.user: 
      key='ag5kZXZ-c3VpdGVnYW1lcnINCxIHSW1hZ2VkYhgxDA' 
      imgs = db.GqlQuery("select * from Imagedb WHERE name =:1", current_user) 
      for img in imgs: 
       key = img.key() # this is the key 
      self.render('profile.html', profile_name = self.user.name, current_user = self.user.name, profile_image = key ,username = self.user.name, email = self.user.email, first_name = self.user.first_name, last_name = self.user.last_name, country = self.user.country, prov_state = self.user.prov_state, city_town = self.user.city_town) 
     else: 
      self.redirect('/register') 

class Change_Profile_Image(MainHandler): 
    def get(self): 
     if self.user: 
      self.render('change_profile_image.html', username = self.user.name, firstname=self.user.first_name, current_user = self.user.name) 
     else: 
      self.render('change_profile_image.html') 

    def post(self): 
     imagedb = Imagedb(name = self.user.name) 
     imageupl = images.resize(self.request.get("img"), 200, 200) 
     imagedb.image = db.Blob(imageupl) 
     imagedb.put() 
     self.redirect('/profile/'+self.user.name) 


app = webapp2.WSGIApplication([('/', MainPage), 
           ('/register', Register), 
           ('/article', ArticlePage), 
           ('/profile/([^/]+)', Profile), 
           ('/login', Login), 
           ('/logout', Logout), 
           ('/welcome', Unit3Welcome), 
        ('/games', Games), 
        ('/forum', Forum), 
        ('/media', Media), 
        ('/rank', Rank), 
        ('/review', Reviews), 
        ('/events', Events), 
           ('/alreadyloggedin', AlreadyLoggedIn), 
        ('/change_profile_image', Change_Profile_Image), 
           ('/img', GetImage)], 
           debug=True) 

好吧,所以這裏是東西得到loopy。如果我更改Profile類以獲取(自我)並從配置文件類的路由中刪除我的reg表達式,則我的圖像完美地工作。只要路由到唯一的配置文件,即將profile_name傳入配置文件處理程序並將URL映射到該配置文件,我就失去了我的GetImage處理程序的所有功能。當我看到源代碼時,沒有任何改變。按照慣例,圖像仍然被傳遞到模板中。

有沒有人對這裏發生了什麼有什麼想法?我真的很感激。非常感謝你提前。希望我的知識能趕上你們,我很快就會回答問題:p。

+0

」好吧,首先我要聲明這是通過Python的Google App Engine。「 - 只要你正確地標記你的問題(你有!),就不需要這樣的序言。 – 2012-07-23 04:48:32

回答

2

如果沒有看到模板的(簡化)版本,很難回答您的問題。

您的代碼中還有一些奇怪的元素使得很難分辨發生了什麼。這很難作爲評論的格式,所以我把它作爲答案,至少你可以看到它。

  • 在您的個人資料處理您的請求get,你試圖獲取當前用戶之前檢查當前用戶是否存在。當您將​​指定爲current_user時,您還可以完全丟棄​​元素,因此除了配置文件頁面上的當前用戶之外,您將永遠不會獲取任何配置文件圖像。

您參加PROFILE_NAME這裏,但從來沒有使用它:

def get(self, profile_name): 
     current_user = str(self.user.name) 
     profile_name = current_user 
  • 您遍歷imgs但替換鍵每次,這意味着,如果返回超過1幅圖像,你可以」告訴你已經發生了這種情況,並且你覆蓋了查詢中最後一個圖像以外的任何東西。你應該做的一件事是添加一個檢查,看看imgs是否是真的,所以你可以告訴你是否有任何結果,可能(雖然我無法想象如何)解釋爲什麼你的圖像處理程序失敗。

最後,您可能會檢查您的源代碼以查看模板中實際請求的圖像url。 「

+1

我還想補充說,這個'self.render('profile.html',profile_name = self.user.name,....)'可以用'self.render('profile.html ',user = self.user)',並且相應地調整模板。 – 2012-07-22 06:22:22

+0

@BurhanKhalid這是一個很好的觀點。 – 2012-07-22 07:07:46

相關問題