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' 对象没有属性 '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 回答