2010-06-28 69 views
2

我是使用Google App Engine進行數據庫編程的新手,並且正在使用Python進行編程。我想知道是否允許我有一個包含多個請求處理程序類的Python文件,每個請求處理程序類都有get和post方法。我知道YAML文件讓我來指定哪些腳本與特定URL運行,如下面的例子:Python Google App Engine:從yaml文件調用特定方法?

handlers: 
- url: /.* 
    script: helloworld.py 

我怎麼會告訴它運行的是在類的一個特定的方法。 py文件?這甚至可能/允許嗎?我是否需要將不同的請求處理程序類分離到不同的python文件中?我目前對數據庫的理解很淺薄,所以我可能沒有意義。

謝謝。

回答

3

我在想,如果允許我 有幾個 請求處理程序類,每一類的 有GET和POST方法一個Python的文件。

當然! app.yaml只是將控制權轉移到helloworld.py,後者將運行該文件中定義的main函數 - 並且該函數通常會設置一個WSGI應用程序,該應用程序根據URL正確調度到正確的處理程序類。例如,看一下示例代碼here,很早就在教程:

application = webapp.WSGIApplication(
            [('/', MainPage), 
             ('/sign', Guestbook)], 
            debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

我不是複製import語句和類的定義,因爲他們不事:這是一個怎樣的例子單個.py文件分派到各種處理程序類(在這種情況下是兩個)。

這並不意味着YAML的文件,您可以調用任何方法無論如何,當然是:相反,它控制交給一個.py文件,其main負責所有如下(和如與webapp迷你框架如果你還支持那些 - 除非它們特別是RESTful ;-)]]被調用依賴,那麼它將始終是getpost方法[[或putdelete,...,在傳入請求中確切的HTTP方法和URL。

+0

謝謝你的徹底和有益的答案!我想我正慢慢開始掌握數據庫等等。非常有趣的東西:) – 2010-06-28 16:59:32

+0

順便說一句,debug = True是做什麼的? – 2010-06-28 17:04:37

+0

@Ayanonagon,不客氣! 'debug = True'意味着在訪問的瀏覽器上顯示異常的回溯(如果有的話),否則默認情況下只給出非常不透明的「內部服務器錯誤」(HTTP狀態500)。 – 2010-06-28 22:07:00