2017-09-20 16 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

このメソッドは、同じ実行スレッドで呼び出されていません。インスタンスデータはスレッドローカルです。 1つのリモート呼び出しから次のリモート呼び出しまでデータを保持したい場合は、クライアントセッションを1つの呼び出しから次の呼び出しまで識別するために、ある種のクッキーを使用してサーバー側にセッションデータを格納する必要があります。

0

getまたはsetの方法を使用する場合は、必ずその意味に従ってください。 getメソッドで変数を設定/更新しないでください。決してsetメソッドから値を返してはいけません。私は多くの人々がそれをやっているのを見ました。

正しい方法:

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

ことが言われていると、あなたはpost()方法に行く前にメソッドself.get()を呼び出す必要があります。これは値の更新に役立ちます。

関連する問題