2011-04-23 87 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()