1.傳送表單5 <form name="add" method="post" action="/calcit">表示名稱為"add"的表單, 使用"post"的方式, 傳送到"/calcit"連結做處理.2. 使用樣板4 template = """5 <form >...8 </form>9 """在 TurboGears 中, 除了可以直接在程式中傳回網頁連結外, 同樣地也可以直接在程式中傳回整個頁面的樣板, 3. 樣版中嵌入傳回值3 @expose(inputform ="add")...6 <input name="A" type="text" value="%s"/> + <input name="B" type="text" value="%s"/>7 <input type="submit" value="=" /> <input name="SUM" type="text" value="%d"/>8 </form>9 """...11 return template%(A,B,SUM)在 TurboGears 中, 寫出並"@expose()"的方法/函數就對應到同名的網頁, 因此在頁面的樣版(即一串字串)中當然可以嵌入傳回值. 那麼若是在同一網頁中有一個以上表單時該如何處理這些傳回的參數呢? 在"@expose()"方法中可以用 inputform 參數來指定要處理的傳入表單傳回的值需要注意型態問題(%d對應到數字, %s對應到字串,...etc).3. 表單處理3 def calcit(self,A=0,B=0, SUM=0):...11 return template%(A,B,SUM)在 TurboGears 中以一致的方式處理使用"post"和"get"方法傳送到 TurboGears Server 的表單.我們可以從方法/函式(Method)的參數中取得這些表單傳回的值.本例子中因為使用同一個函數來顯示網頁與處理網頁傳回的參數 (A欄位, B欄位, 加總結果欄位), 第3行方法/函式取得的參數就是網頁傳回的參數, 第11行回傳的值則是用來在網頁上顯示結果. 你可以試試看如果將回傳的值去掉, 再看到表單欄位上值是不是永遠都是 0 呢 :-)4. 回傳值處理3 def calcit(self,A=0,B=0, SUM=0):...10 SUM = (int(A)+int(B))從表單接收所有預設回傳的值都會是字串格式(之後介紹到 validators() 方法可以在此改變回傳格式並確認格式正確性). |