0

次のクラス定義があります。

class TestHandler(webapp2.RequestHandler):
    def get(self):
        self.msg = "hello world"
        self.render_form()     # modifies self.msg

    def post(self):
        print self.msg
        #...
        #...
        #...
        self.render_form()

実行すると、次のエラーが表示されます。

ファイル "/Users/mhalsharif/Desktop/wordsnet1/ascii-chan/main.py"、129 行目、印刷後の self.msg AttributeError: 'AnswersHandler' object has no attribute 'msg'

文字列を 'msg' 属性に保存し、post() が呼び出されたときに出力しようとしているだけです。なぜ私はそれができないのですか?そしてそれを修正する方法は?

4

2 に答える 2

1

リクエスト間で self.msg のようなデータを渡すには、データストア、Cookie、または webapp2 アプリ レジストリを使用する必要があります: http://webapp-improved.appspot.com/guide/app.html#registry

于 2013-06-06T07:49:41.407 に答える
1

webapp2 は、受け取ったリクエストごとに新しいハンドラーをインスタンス化するため、リクエストで設定した場合、オブジェクトが異なるself.somethingという理由だけで、別のリクエストで同じ値を取得できるという保証はありません。self

これがあなたの場合です: get と post リクエストを処理するハンドラーは同じインスタンスではないため、最初に設定されていないため、単純postに読み取ることができません。self.msg

ドキュメントを確認して、ハンドラーのライフサイクルについて理解を深めることができます。

于 2013-06-07T13:43:53.157 に答える