App Engine:将表单数据映射到url

时间:2012-12-16 04:45:26

标签: python html google-app-engine python-2.7

如何在使用Google App Engine时将表单数据编码为网址?

下面的代码会生成一个表单,您可以在其中输入一些文本。然后,该文本显示在另一页"/sign"

我不想直接转到/sign,而是指向/sign?message="hello"

这是我的代码,从这里开始:https://developers.google.com/appengine/docs/python/gettingstartedpython27/handlingforms

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):
        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>')

app = webapp2.WSGIApplication([('/', MainPage),
                              ('/sign', Guestbook)],
                              debug=True)

1 个答案:

答案 0 :(得分:1)

我并不确定你想要达到的目标。如果你写下你的意图,你可能会获得更可靠的建议。

要获得结果,我认为您的描述需要使用get而不是post。获取将改变网址。这是修改后的代码:

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">
                <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 get(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>')


app = webapp2.WSGIApplication([('/', MainPage),
                              ('/sign', Guestbook)],
                              debug=True)

如果您希望了解有关webapp2以及get和post方法的更多信息,请查看udacity CS253