我有以下类定义:
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