我目前正在学习使用Google App Engine,我将这个示例修改为如下所示:
import cgi
import webapp2
from google.appengine.api import users
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.out.write("""
<html>
<body>
<form action="/sign" method="post">
<div><textarea name="content" rows="3" cols="60"></textarea></div>
<div><input type="submit" value="Sign Guestbook"></div>
</form>
</body>
</html>""")
class Guestbook(webapp2.RequestHandler):
def post(self):
cgi.test()
app = webapp2.WSGIApplication([('/', MainPage),
('/sign', Guestbook)],
debug=True)
因为我想看看有什么作用cgi.test()
。它产生的输出与Python 文档中的描述相匹配,但它错误地表示没有 POST 数据。此外,它还通知以下错误:
File "C:\Python27\lib\cgi.py", line 918, in test
print_environ(environ)
File "C:\Python27\lib\cgi.py", line 944, in print_environ
print "<DT>", escape(key), "<DD>", escape(environ[key])
File "C:\Python27\lib\cgi.py", line 1035, in escape
s = s.replace("&", "&") # Must be done first!
AttributeError: 'LogsBuffer' object has no attribute 'replace'
这是在本地主机开发环境中。为什么我得到不正确的结果?该示例指出,并非所有 Python 函数都被允许,尽管我怀疑这会是这种情况cgi.test()
,对吗?
编辑:我是否必须以app.yaml
某种方式进行更改以允许特殊处理http://localhost:8080/sign
?