Python - 获取POST数据
我正在谷歌的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的变量。