Appengine GET参数

时间:2011-04-23 23:38:01

标签: python google-app-engine

我对Python并不熟悉,并试图将我的一个php webapps转换为python。目前我正在使用appengine启动器在localhost上运行应用程序,这正是我想要做的。

我正在尝试获取发布到网址的所有参数列表,然后将其提交到网页并获取其内容。

所以基本上: 1:得到参数 2:通过提交这些参数来获取网址的内容(PHP等价于cur_of 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行代码才能开始使用函数。

2 个答案:

答案 0 :(得分: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。 dev_appserver调用main()函数,假设你的app.yaml文件设置正确。

def get(self):
    name1 = self.request.get_all("q")
    name2 = self.request.get_all("input")
    self.response.out.write(name1 + ',' + name2)

如果您正确设置了应用,则应该可以正常工作。

答案 1 :(得分:0)

如果要使用WebApp框架,则需要更多行代码才能使其工作。在代码的末尾添加以下行(并删除实例化类的最后两行并调用get方法)

application = webapp.WSGIApplication([('/', MyHandler)])

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()