2011-04-23 68 views
4

我不是很熟悉Python,并且正在尝试将我的一个php webapps转换为python。目前我正在使用appengine启动器在本地主机上运行应用程序,这就是我正在尝试做的事情。Appengine GET参数

我想获取发布到网址的所有参数的列表,然后将它们提交到一个页面并获取其内容。

所以基本上: 1:拿到PARAMS 2:通过提交这些PARAMS(PHP的等价的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() 
得到一个URL的内容

和URL

http://localhost:8080/?q=test1&input=test2 

,这是我得到

错误现在210
AttributeError: 'MyHandler' object has no attribute 'request' 

我不能得到它打印任何东西,我不知道我怎么可以通过提交NAME 1和NAME

我试图寻找的文件得到另一个URL的内容,但我不能做的意义因为他们所拥有的仅仅是2行代码来启动功能的使用。

回答

4
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。假设你的app.yaml文件设置正确,main()函数被dev_appserver调用。

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

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

+0

谢谢!有效。现在可以通过输入名称1和名称2来帮助我获得另一个网页的内容吗? – Kartik 2011-04-24 00:19:07

+0

你可能应该阅读一些文档,或者提出另一个问题。你可能要找的东西就像'self.redirect(“/ home”)'。根据您的nameX参数选择目的地。 – Calvin 2011-04-24 00:23:28

0

如果您要使用WebApp框架,您将需要更多几行代码才能实现此功能。在代码末尾贴上以下几行(并删除最后两行,您将实例化您的类并调用get方法)

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

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main()