用 webapp 处理网络表单
编辑helloworld/helloworld.py
:
import cgi
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class MainPage(webapp.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(webapp.RequestHandler):
def post(self):
self.response.out.write('<html><body>You wrote:<pre>')
self.response.out.write(cgi.escape(self.request.get('content')))
self.response.out.write('</pre></body></html>')
application = webapp.WSGIApplication([('/', MainPage),('/sign', Guestbook)], debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
重新加载页面以查看表单,然后尝试提交邮件。
该版本有两个处理程序:映射到网址 /
的 MainPage
,显示网络表单。映射到网址 /sign
的 Guestbook
,显示网络表单提交的数据。
Guestbook
处理程序使用 post()
方法而不是 get()
方法。这是因为 MainPage
显示的表单使用 HTTP POST 方法 (method="post"
) 来提交表单数据。如果由于一些原因您需要一个处理程序来处理对同一网址的 GET 和 POST 操作,您可以为相同类中的每个操作定义一种方法。
post()
方法的代码从 self.request
获取表单数据。在把它重新显示给用户之前,它会使用 cgi.escape()
来将 HTML 特殊字符转义为相应的对等字符实体。cgi
是标准 Python 库中的模块