如何添加一个实例属性到webapp2.RequestHandler的子类



我有以下类定义:

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行,在post中打印self.msgAttributeError: 'AnswersHandler'对象没有属性'msg'

我只是想在'msg'属性中保存一个字符串,并在post()被调用时打印它。为什么我不能这么做?如何解决这个问题?

webapp2将为它收到的每个请求实例化一个新的处理程序,所以不能保证如果你在一个请求中设置了self.something,你将能够在另一个请求中检索到相同的值,只是因为self将是一个不同的对象。

这就是在你的情况下发生的事情:处理你的get和post请求的处理程序不是同一个实例,所以post将无法读取self.msg,仅仅因为它从未首先设置。

您可以查看文档,以便更好地理解处理程序的生命周期。

像你自己一样传递数据。MSG之间的请求你必须使用数据存储,cookie或webapp2应用注册表:http://webapp-improved.appspot.com/guide/app.html#registry

相关内容

  • 没有找到相关文章

最新更新