使用HIP
在askname.py,有一件事情值得注意,這個代碼鎘刑嗟膒rint語句.如果可以不使用print而直接輸出,那將會是一件多么好的事情.幸運的是,Karrigell提供了這樣的功能.這被稱為HTML Inside Python,這將清除所有討厭的print語句.并且從askname.py到TML Inside Python的轉(zhuǎn)換也非常容易.我們只是需要移走那些print語句.刪除askname.py里的print并將文件重命名為askname.hip
f QUERY.has_key ( "name" ): "Your name is", _name + "." else: "What is your name?<br />" "<form method='POST'>" "<input type='text' name='name' /><br />" "<input type='submit' value='Proceed' />" "</form>"
這就是HTML Inside Python.Karrigell將會檢查你的文件并自動在需要的地方添加print.HTML Inside Python是Karrigell簡單易學的一個有力證明.
Python Inside HTML
Karrigell提供了HTML Inside Python,那自然的,也會提供Python Inside HTML.和一般的做法一樣,將python語句寫在特殊的標記里,然后把最終結(jié)果發(fā)送到用戶的瀏覽器.讓我們來創(chuàng)建一個簡單的示例,random.pih
<% import random %> Random number: <b><% print random.random() %></b>
正如你說看到的,Python Inside HTML的概念如此的簡單.而其實,代碼塊可以更加的簡單:
<%= random.random() %>
但是,如果處理更復雜的邏輯,比如處理表單數(shù)據(jù)?表單數(shù)據(jù)可以像在Python scripts中被處理那樣被處理.這是有一個askname.py的復制品askname.pih
<% if QUERY.has_key ( "name" ): %> Your name is <%= _name %>. <% end %> <% else: %> What is your name?<br /> <form method='POST'> <input type='text' name='name' /><br /> <input type='submit' value='Proceed' /> </form> <% end %>
請注意<% end %>的使用.這將標識代碼塊的結(jié)尾,就像上面我們的條件語句的縮進一樣.另一個可選擇的辦法是使用indent標簽,這個也被用來標識代碼縮進.
<indent> <% if QUERY.has_key ( "name" ): %> Your name is <%= _name %>. <% else: %> What is your name?<br /> <form method='POST'> <input type='text' name='name' /><br /> <input type='submit' value='Proceed' /> </form> </indent>
更多的特性
我們來這樣試一下,標簽可以通過Python scripts這樣使用,tagtest.py
rom HTMLTags import *
print CENTER ( B ( "Test." ) )
session同樣可以在Karrigell被處理,并且Karrigell還提供了一個良好的接近于面向?qū)ο蟮膕ession機制.讓我們創(chuàng)建一段簡單的代碼來示范Karrigell中的session.回到我們的第一個例子,用戶將會獲得一個幸運數(shù)字.如果用戶刷新頁面,該數(shù)字仍然存在,因為這個數(shù)字將被保存在sessin中.當然,用戶將可以選擇重新獲取新的幸運數(shù)字,這通過關閉sessin來完成.創(chuàng)立一個名為luckynumber.ks的Karrigell services,輸入下面的代碼:
import random
user = Session()
def index(): if not "luckyNumber" in dir ( user ): user.luckyNumber = random.randint ( 0, 20 ) print "Your lucky number:", user.luckyNumber print "<br /><br />" print "<a href='reset'>Reset Lucky Number</a>" def reset(): user.close() print "Your lucky number has been reset." print "<br /><br />" print "<a href='index'>Back</a>"
結(jié)論
Karrigell提供了四種方法來進行web開放,Python scripts,Karrigell services,HTML Inside Python和Python Inside HTML,每種方法都有其特點,但是他們卻都有一個共同的優(yōu)點:使用簡單.Karrigell 將web開發(fā)變成了一件優(yōu)雅,簡單的事情.無論是單獨使用Karrigell還是和apache結(jié)合使用,都是令人吃驚的簡單.因為,無論是對于初學者,還是老手,Karrigell都是不錯的選擇.
經(jīng)典論壇討論: http://bbs.blueidea.com/thread-2802613-1-1.html
本文鏈接:http://www.95time.cn/tech/program/2007/5007.asp
出處:藍色理想
責任編輯:moby
上一頁 Karrigell 入門簡介[2] 下一頁
◎進入論壇網(wǎng)絡編程版塊參加討論
|