2013-06-06 67 views
0

我有以下的类定义:如何将实例属性添加到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,在后 打印self.msg AttributeError的:“AnswersHandler”对象有没有属性“味精”

我只是试图挽救一个字符串中的“味精”属性并打印时后()被调用。为什么我不能那样做?以及如何解决它?

+0

当'post'被调用但没有'get'且'self.msg'尚未定义时,你可能不会处理这种情况。 – Jared

+0

我在TestHandler的构造函数中添加了以下声明:self.msg =“hello first”,但仅显示self.msg的初始值(即“hello first”)而不是“hello world”。我检查了日志控制台,并且在post()之前始终调用get()! – user1583416

回答

0

webapp2的将实例化一个新的处理程序每​​每个请求,接收,所以难保如果您在请求中设置了self.something,您将能够通过另一个请求检索相同的值,这是因为self将是一个不同的对象。

这就是你的情况:处理你的获取和发布请求的处理程序不是同一个实例,所以post不能简单地读取self.msg,因为它从来没有设置优先。

您可以查看docs以更好地了解处理程序的生命周期。

+0

我虽然有类似的东西可能导致了这个问题。谢谢! – user1583416

相关问题