現在、 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
ますか?