Python - 获取POST数据

0 投票
3 回答
3188 浏览
提问于 2025-04-16 21:42

我正在谷歌的appspot上写一些Python脚本。我刚开始学习Python,所以对它了解得不多。

我使用的是谷歌appspot文档中可以找到的示例代码。但是每次我提交这个代码中的表单时,页面就变成空白,没有任何错误提示。有人知道这是为什么吗?

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):
      p = self.request.get("p", default_value="25")

      self.response.out.write("""
          <html>
            <body>
              <form action="/" method="post">
        The first <input type="text" name="p" value=""" + p + """ style="width: 35px;text-align:center;"> fibionacci numbers:<br />""")

      p = int(p)
      a, b = 0, 1
      while p > 0:
    self.response.out.write(str(b) + " ")
    a, b = b, a+b
    p = p - 1

      self.response.out.write("""
              </form>
            </body>
          </html>""")


application = webapp.WSGIApplication([('/', MainPage)],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

提前谢谢大家。

3 个回答

0

建议的方法是读取那些存在或不存在的键:

p = form.get('p', '0') # 0 = default value
try:
    p = int(p)
except ValueError, e:
    pass # What do do when p is not an integer?
0

你遇到了一个 NameError 的错误。结果却出现了 KeyError 的错误。

1

哇哦

如果你在使用谷歌的应用引擎(就是在appspot上托管的那个,我敢肯定你就是在用这个),那么你可以用这个:

tPostVariable = self.request.get('PostVariableName')

如果你按照这个方式设置了你的处理程序,那么它会神奇地自动工作:

class ClassName(webapp.RequestHandler):
    #For Get Pages
    def get(self):
        tPostVariable = self.request.get('PostVariableName')

    #For Post Pages
    def post(self):
        tPostVariable = self.request.get('PostVariableName')

这样做可以同时处理GET和POST的变量。

撰写回答