2011-07-17 113 views
0

我想在谷歌appspot上做一些python腳本。我剛剛開始使用python,所以我現在不太瞭解它。Python - 獲取發佈數據

我正在使用您可以在google 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() 

在此先感謝您。

+0

我不會幫你的谷歌應用程序,但如果'形式'只是一個字典,比你可以使用'print form.keys()'看看它保存什麼鍵;如果它是其他類型的,如果它提供了任何文檔,你可以使用'print dir(form)'列出它的內部或'help(形式)'。在處理新庫時,dir和help是非常有用的。 – tomasz

+0

FieldStorage不會在POST中拾取內容的情況並不常見,您是否介意編輯您的問題以包含表單的內容,因爲它顯示在HTML文檔中? – SingleNegationElimination

+0

你爲什麼要編寫一個原始的CGI應用程序?有許多可用的框架,包括內置的webapp,這將使得編寫webapp比這更少痛苦。 –

回答

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變量。

+0

我曾嘗試過,但後來我得到以下錯誤: :name'self'未定義Traceback – Jerodev

+0

請確保您的應用程序設置爲像示例中的helloworld.py應用程序:http://code.google.com/appengine/docs/python/gettingstarted/usingwebapp.html 如果您沒有正確的包括,那麼我認爲這可能會導致該錯誤。 –

+0

謝謝,我會編輯我的問題。 – Jerodev

0

你抓NameError。它拋出KeyError

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?