我是Python新手并且正在尝试使用AppEngine来使用以下代码:
class MainPage(webapp2.RequestHandler):
def show(self, display=""):
msg = """<!doctype html>
<head>
<meta charset="utf-8"/>
<title> Message </title>
</head>
<body>
<div name=text>
%(text)s
</div>
</body>
</html>"""
self.response.write(msg % {"text":display})
class RetCall(webapp2.RequestHandler):
self.response.headers['Content-Type'] = 'text/html'
text_entered = self.request.get('text')
text_entered = "Hey " + text_entered
m = MainPage()
m.show(text_entered)
MainPage
中有一个get函数,我已将其排除在外。
当我以这种方式运行时,我收到错误:
AttributeError:'NoneType'对象没有属性'write'
我想通过使用m
- MainPage
的实例作为对象,它应该可行。我哪里错了?
答案 0 :(得分:0)
那是因为webapp2.RequestHandler
在构建时没有得到response
。 Webapp2会自动创建一个响应类,并在将请求路由到它时将其传递给您的处理程序。有关详细信息,请参阅routing上的webapp2文档。
如果您只想测试自己的处理程序,请查看webapp2的unit testing文档。它不仅对单元测试很有用,而且还可以在python shell等交互式环境中进行尝试。
答案 1 :(得分:0)
传递self.response
def show(response, display=""):
msg = """<!doctype html>
<head>
<meta charset="utf-8"/>
<title> Message </title>
</head>
<body>
<div name=text>
%(text)s
</div>
</body>
</html>"""
response.write(msg % {"text":display})
class MainPage(BaseHandler):
pass
class RetCall(BaseHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/html'
text_entered = self.request.get('text')
text_entered = "Hey " + text_entered
show(self.response, text_entered)