Appengine GET 参数
我对Python不是很熟悉,正在尝试把我的一个PHP网页应用转到Python上。目前我在本地用appengine launcher运行这个应用,下面是我想做的事情。
我想获取所有发送到网址的参数,然后把这些参数提交到一个页面,获取它的内容。
简单来说就是:
1: 获取参数
2: 通过提交这些参数来获取网址的内容(在PHP中类似于curl或file_get_contents的功能)
这是我到目前为止写的代码
from google.appengine.ext import webapp
class MyHandler(webapp.RequestHandler):
def get(self):
name1 = self.request.get_all("q")
name2 = self.request.get_all("input")
return name1,name2
x = MyHandler()
print x.get()
还有这个网址
http://localhost:8080/?q=test1&input=test2
这是我遇到的错误
AttributeError: 'MyHandler' object has no attribute 'request'
现在我无法打印任何东西,也不确定如何通过提交name1和name2来获取另一个网址的内容。
我试着查看文档,但因为文档里只有两行代码来说明如何使用这个功能,所以我看得一头雾水。
2 个回答
0
如果你打算使用WebApp框架,那么你需要再加几行代码才能让它正常工作。把下面这些代码放在你代码的最后面(同时把你创建类和调用get方法的最后两行代码删掉)
application = webapp.WSGIApplication([('/', MyHandler)])
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
6
x = MyHandler()
print x.get()
这不是一个典型的AppEngine应用程序的部分。你不能用print
来把输出返回给浏览器。
当你在AppEngineLauncher中创建一个新应用时,它会给你一个像这样的基础项目:
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
class MainHandler(webapp.RequestHandler):
def get(self):
self.response.out.write('Hello world!')
def main():
application = webapp.WSGIApplication([('/', MainHandler)],
debug=True)
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
你的应用也必须以类似的方式运行。你需要一个main()方法,这个方法会创建一个wsgi_app,它负责调用你的处理程序。这个main()函数是由dev_appserver调用的,前提是你的app.yaml文件设置正确。
def get(self):
name1 = self.request.get_all("q")
name2 = self.request.get_all("input")
self.response.out.write(name1 + ',' + name2)
如果你正确设置了你的应用,这样应该可以正常工作。