我有以下类定义:
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行,在帖子中 print self.msg AttributeError:'AnswersHandler'对象没有属性'msg'
我只是想在'msg'属性中保存一个字符串,并在调用post()时打印它。为什么我不能这样做?以及如何解决它?
答案 0 :(得分:1)
要在请求之间传递self.msg之类的数据,您必须使用数据存储区,Cookie或webapp2应用注册表:http://webapp-improved.appspot.com/guide/app.html#registry
答案 1 :(得分:1)
webapp2将根据收到的每个请求实例化一个新的处理程序,因此无法保证如果在请求中设置self.something
,您将能够使用另一个请求检索相同的值,只是因为{{1将是一个不同的对象。
在您的情况下会发生这种情况:处理您的get和post请求的处理程序不是同一个实例,因此self
将无法读取post
因为它从未首先设置
您可以查看docs,以便更好地了解处理程序的生命周期。