CGI in Google App Engine ==================================== :Author: Frankie Chow :Version: 2 :Copyright: Creative Commons licenses :Date: 2009-3-14 :Category: Notes, Python, GAE :Description: 介紹在 google app engine 下使用 python lib cgi. :ShortName: CGI in gae .. contents:: Python 的 CGI 模組 =============================== 我不喜歡跟 Getting Started: Python 來介紹 GAE !這樣的介紹對了解 GAE 幫助也不大。 那我們換另一個角度來講吧。 還記得我們的 TestGAE 嗎。 TestGAE 中的 app.yaml ================================ 我們修改一下 TestGAE 目錄下 app.yaml 的內容。 :: application: tt version: 2 runtime: python api_version: 1 handlers: - url: / script: main2.py - url: /cgi/ script: main3.py 修改 version -------------------------- 這裡我們修改了 version 中的數值,這裡把它改作 2 。在我們主機測試的環境下修改這數值是沒有特別意義的, 但是如果您的 app 已登記和上載到 appengine_ 上,那意義就很大了!因為 google 是會分別存放兩個不同的版本。 .. _appengine: http://appengine.google.com/ 修改 handlers --------------------------- 這裡我們修改了 handlers 下的不同資料。 :: handlers: - url: / script: main2.py - url: /cgi/ script: main3.py 這裡告訴 app engine server ,如果客戶 request url: / 的話,那就執行 main2.py 。 而 request url: /cgi/ 的話,那就執行 main3.py ! TestGAE 下不同的 python 程式 =========================================== 在我們 TestGAE 下除了 app.yaml 外,就只有兩個不同的 python 程式︰ * main2.py * main3.py 試看其中的內容,可能對我們會有一定的啟發! main2.py 下的內容 ------------------------------------ 以下是我們 main2.py 的內容︰ .. sourcecode:: python print '''Content-Type: text/html
''' 這是一個很簡單的 html form ,但是因為 app engine server 是會拿來執行的,所以我們就用 print 這個指令列印出來。 不同的 Input 欄位 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 這裡我們可以看見兩個 input 欄位︰ 1. clientname 2. submit 我們可以在 clientname 中輸入自己的名稱,另外也可以透過 submit 來提交其中的數值。 main3.py 下的內容 --------------------------------------- 以下是我們 main3.py 的內容︰ .. sourcecode:: python import cgi def main(): print "Content-type: text/html\n" form = cgi.FieldStorage() if form.has_key("clientname") and \ form["clientname"].value != "": print "