2017-09-20 113 views
-3

我在我的init方法中將變量設置爲空列表。然後,在我的get方法中,我查詢數據庫並設置列表。接下來,在我的post方法中,我試圖使用該變量。但是,由於某種原因,當我的post方法運行時(這可能是完全可以預料的嗎?),變量會回到空列表中。你能幫我弄清楚我做錯了什麼,或者讓我知道是否有其他方法可以做到這一點?在init中定義變量,在get方法中設置變量,並在post方法中使用它

謝謝!

class thisHandler(BaseHandler): 
    def __init__(self, *args, **kwargs): 
     super(thisHandler, self).__init__(*args, **kwargs) 
     self.topList= [] 

    def get(self, id): 
     if self.user: 
      #Other stuff happens 
      self.topList = get_myList(id) #This is definitely returning a populated list as it displays just fine on my page 
      #Other stuff happens 
      self.render('page.html', variables) 

    def post(self, id): 
     #Other stuff happens 
     system.debug(self.topList) #this comes back empty. this is the first reference to it in the post method 
     #Other stuff happens 

回答

0

這些方法沒有在同一個執行線程中被調用。您的實例數據是線程本地的。如果您希望數據從一次遠程調用持續到另一次遠程調用,您需要將會話數據存儲在服務器端,使用某種類型的cookie來識別從一次調用到另一次調用的客戶端會話。

0

每當您使用方法getset時,請始終堅持其含義。切勿在get方法中設置/更新任何變量,也不要從set方法返回任何值。我見過很多人這樣做。

正確方法:

GET method - should always return what you want 
SET method - should always set the values and never return anything 

有了這樣說,你需要纔去post()方法調用的方法self.get()。這有助於更新價值。

相關問題