| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> other >> Karrigell 入門
 

Karrigell 入門

2008-12-28 07:39:21  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  原文:http://www.devshed.com/c/a/Python/Karrigell-for-Python/

  因爲python並不是特別爲web開發而生,所以現在很多的python使用者都在開發能夠讓python運行于web的框架.Karrigell就是現在爲數衆多的python/web框架之一.本文將對Karrigell做簡要的介紹.

  簡介

  Karrigell是一個功能強大且靈活的python/web框架,爲web開發提供了多種解決方案.並且,很重要的,它的安裝和使用都非常的簡單.即使是python的初學者,也不會在使用Karrigell的時候犯迷糊,並且Karrigell也沒有因爲結構簡單而限制python的一些特性.它提供了自己的web服務器完成工作,但是也非常容易的和其他的web服務器(例如apache)結合工作,所以如果你選擇了Karrigell,你仍然可以使用之前一直在使用的web服務器.

  這篇文章將從Karrigell的安裝開始說起,介紹數個Karrigell的重要特性.

  安裝Karrigell

  上面說了,Karrigell的安裝一點都不麻煩.你要做的第一步是到SourceForge下載最新的Karrigell,當你下載了zip包後,將其解壓縮到一個容易找到的目錄.然後直接雙擊Karrigell.py啓動Karrigell的內置web服務器.如果你現在並不想把Karrigell和其他的web服務器結合使用,那Karrigell的安裝到此就結束了.

  但如果你想要設置你的web服務器來和Karrigell結合,我們拿apache來舉例子.我們現在需要Karrigell在apache的後台運行,來使apache將相關的請求傳送給Karrigell

  因爲apache一般會運行在80端口,你需要給Karrigell設置一個其他的運行端口.有兩個方法來達到這個目的,其一是使用命令行來完成,或者可以改變Karrigell的配置文件.先來看如何用命令行,我們將在8080端口運行Karrigell.

  C:\Karrigell>Karrigell.py -P 8080

  第二種,你需要找到Karrigell.ini,然後加上這麽一句

  port=8080

  現在你需要配置apache將有關的請求轉向到Karrigell.一般來說,你希望apache可以處理任何的靜態文件請求,比如php.你可以和apache共享同一個路徑, 也可以設立單獨的路徑..然後設置那些文件需要apache把請求傳遞給Karrigell,你需要添加下面的內容到apache的 httpd.conf 文件.

  RewriteEngine On

  RewriteRule ^/(.*).py(.*) 1.py$2]http://localhost:8080/$1.py$2 [L,P]

  RewriteRule ^/(.*).ks(.*) 1.ks$2]http://localhost:8080/$1.ks$2 [L,P]

  RewriteRule ^/(.*).hip(.*) 1.hip$2]http://localhost:8080/$1.hip$2 [L,P]

  RewriteRule ^/(.*).pih(.*) 1.pih$2]http://localhost:8080/$1.pih$2 [P]

  如果你想, 你可以設置全部的特定文件請求都轉給Karrigell.在本文中,我們將使用testarea這個路徑,所以我們這樣設置httpd.conf:

  RewriteEngine On

  RewriteRule ^/testarea(.*) 1]http://localhost:8080/testarea$1 [P]

  當然你可以這樣:

  RewriteEngine On

  RewriteRule ^/testarea/(.*).py(.*)

1.py$2]http://localhost:8080/testarea/$1.py$2 [L,P]

  RewriteRule ^/testarea/(.*).ks(.*)

1.ks$2]http://localhost:8080/testarea/$1.ks$2 [L,P]

  RewriteRule ^/testarea/(.*).hip(.*)

1.hip$2]http://localhost:8080/testarea/$1.hip$2 [L,P]

  RewriteRule ^/testarea/(.*).pih(.*)

1.pih$2]http://localhost:8080/testarea/$1.pih$2 [P]

  Scripts和Services

  Python scripts和Karrigell services將是python開發者使用Karrigell最容易接觸的兩個概念.Python scripts就是python的腳本,開發者使用print語句輸出到用戶浏覽器的內容.如果你還不明白,建立一個testarea目錄,然後我們將開始創建我們的第一個Python scripts.新建一個文件test.py:

  print "<center>"

  print "Hello!"

  print "<br /><br />"

  print "Karrigell is configured and working."

  print "</center>"

  在浏覽器中打開這個文件,如果之前你的Karrigell都正確設置,那你將會看到輸出的內容.

  Python scripts也可以容易的使用表單.讓我們再來創建一個簡單的頁面,用戶可以在這個頁面輸入自己的名字.新建文件askname.py:

  if QUERY.has_key ( "name" ):

   print "Your name is", _name + "."

  else:

   print "What is your name?<br />"

   print "<form>"

   print "<input type='text' name='name' /><br />"

   print "<input type='submit' value='Proceed' />"

   print "</form>"

  Karrigell services的編寫和Python scripts類似.這個的作用是映射請求到用戶指定的方法.指定方法的名字通過跟在Karrigell services後面進行傳遞.比如,下面這個url將會調用test這個方法

http://localhost/testarea/test.ks/test

  讓我們實際編寫下這個例子

  def index():

   print "Index function."

  def test():

   print "Test function."

  如果不傳遞方法名而使用這些Python scripts,你的程序會默認執行index方法.如果傳遞了方法名test,那test方法就會被調用.調用一個不存在的方法會抛出異常.

  使用Karrigell services來處理表單傳遞的數據也很簡單.讓我們來創建一個ascname.ks

  def index():

   print "What is your name?<br />"

   print "<form action='nameSubmit'>"

   print "<input type='text' name='name' /><br />"

   print "<input type='submit' value='Proceed' />"

   print "</form>"

  def nameSubmit ( name ):

   print "Your name is", name + "."

  當然,允許外部公開訪問你的方法是一件很危險的事情,爲了阻止不允許的用戶訪問你的方法,按照下面所述給你的方法加前綴:

  def _private():

   pass

  嘗試訪問_private方法將會抛出異常.

  使用HIP

  在askname.py,有一件事情值得注意,這個代碼镉刑嗟膒rint語句.如果可以不使用print而直接輸出,那將會是一件多麽好的事情.幸運的是,Karrigell提供了這樣的功能.這被稱爲HTML Inside Python,這將清除所有討厭的print語句.並且從askname.py到TML Inside Python的轉換也非常容易.我們只是需要移走那些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語句寫在特殊的標記裏,然後把最終結果發送到用戶的浏覽器.讓我們來創建一個簡單的示例,random.pih

  <% import random %>

  Random number: <b><% print random.random() %></b>

  正如你說看到的,Python Inside HTML的概念如此的簡單.而其實,代碼塊可以更加的簡單:

  <%= random.random() %>

  但是,如果處理更複雜的邏輯,比如處理表單數據?表單數據可以像在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 %>的使用.這將標識代碼塊的結尾,就像上面我們的條件語句的縮進一樣.另一個可選擇的辦法是使用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還提供了一個良好的接近于面向對象的session機制.讓我們創建一段簡單的代碼來示範Karrigell中的session.回到我們的第一個例子,用戶將會獲得一個幸運數字.如果用戶刷新頁面,該數字仍然存在,因爲這個數字將被保存在sessin中.當然,用戶將可以選擇重新獲取新的幸運數字,這通過關閉sessin來完成.創立一個名爲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>"

  結論

  Karrigell提供了四種方法來進行web開放,Python scripts,Karrigell services,HTML Inside Python和Python Inside HTML,每種方法都有其特點,但是他們卻都有一個共同的優點:使用簡單.Karrigell 將web開發變成了一件優雅,簡單的事情.無論是單獨使用Karrigell還是和apache結合使用,都是令人吃驚的簡單.因爲,無論是對于初學者,還是老手,Karrigell都是不錯的選擇.
 
 
 
上一篇《實現文件上傳的程序源碼》
下一篇《再論夏新E70無故自動斷電關機現象》
 
 
 62.*.*.* 發表于2011-07-25 13:26:06
  No question this is the place to get this info, tahkns y'all.
  回覆
  
  
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

 
 
 
原文:http://www.devshed.com/c/a/Python/Karrigell-for-Python/ 因爲python並不是特別爲web開發而生,所以現在很多的python使用者都在開發能夠讓python運行于web的框架.Karrigell就是現在爲數衆多的python/web框架之一.本文將對Karrigell做簡要的介紹. 簡介 Karrigell是一個功能強大且靈活的python/web框架,爲web開發提供了多種解決方案.並且,很重要的,它的安裝和使用都非常的簡單.即使是python的初學者,也不會在使用Karrigell的時候犯迷糊,並且Karrigell也沒有因爲結構簡單而限制python的一些特性.它提供了自己的web服務器完成工作,但是也非常容易的和其他的web服務器(例如apache)結合工作,所以如果你選擇了Karrigell,你仍然可以使用之前一直在使用的web服務器. 這篇文章將從Karrigell的安裝開始說起,介紹數個Karrigell的重要特性. 安裝Karrigell 上面說了,Karrigell的安裝一點都不麻煩.你要做的第一步是到SourceForge下載最新的Karrigell,當你下載了zip包後,將其解壓縮到一個容易找到的目錄.然後直接雙擊Karrigell.py啓動Karrigell的內置web服務器.如果你現在並不想把Karrigell和其他的web服務器結合使用,那Karrigell的安裝到此就結束了. 但如果你想要設置你的web服務器來和Karrigell結合,我們拿apache來舉例子.我們現在需要Karrigell在apache的後台運行,來使apache將相關的請求傳送給Karrigell 因爲apache一般會運行在80端口,你需要給Karrigell設置一個其他的運行端口.有兩個方法來達到這個目的,其一是使用命令行來完成,或者可以改變Karrigell的配置文件.先來看如何用命令行,我們將在8080端口運行Karrigell. C:\Karrigell>Karrigell.py -P 8080 第二種,你需要找到Karrigell.ini,然後加上這麽一句 port=8080 現在你需要配置apache將有關的請求轉向到Karrigell.一般來說,你希望apache可以處理任何的靜態文件請求,比如php.你可以和apache共享同一個路徑, 也可以設立單獨的路徑..然後設置那些文件需要apache把請求傳遞給Karrigell,你需要添加下面的內容到apache的 httpd.conf 文件. RewriteEngine On RewriteRule ^/(.*).py(.*) [url=http://localhost:8080/$1.py$2]http://localhost:8080/$1.py$2[/url] [L,P] RewriteRule ^/(.*).ks(.*) [url=http://localhost:8080/$1.ks$2]http://localhost:8080/$1.ks$2[/url] [L,P] RewriteRule ^/(.*).hip(.*) [url=http://localhost:8080/$1.hip$2]http://localhost:8080/$1.hip$2[/url] [L,P] RewriteRule ^/(.*).pih(.*) [url=http://localhost:8080/$1.pih$2]http://localhost:8080/$1.pih$2[/url] [P] 如果你想, 你可以設置全部的特定文件請求都轉給Karrigell.在本文中,我們將使用testarea這個路徑,所以我們這樣設置httpd.conf: RewriteEngine On RewriteRule ^/testarea(.*) [url=http://localhost:8080/testarea$1]http://localhost:8080/testarea$1[/url] [P] 當然你可以這樣: RewriteEngine On RewriteRule ^/testarea/(.*).py(.*) [url=http://localhost:8080/testarea/$1.py$2]http://localhost:8080/testarea/$1.py$2[/url] [L,P] RewriteRule ^/testarea/(.*).ks(.*) [url=http://localhost:8080/testarea/$1.ks$2]http://localhost:8080/testarea/$1.ks$2[/url] [L,P] RewriteRule ^/testarea/(.*).hip(.*) [url=http://localhost:8080/testarea/$1.hip$2]http://localhost:8080/testarea/$1.hip$2[/url] [L,P] RewriteRule ^/testarea/(.*).pih(.*) [url=http://localhost:8080/testarea/$1.pih$2]http://localhost:8080/testarea/$1.pih$2[/url] [P] Scripts和Services Python scripts和Karrigell services將是python開發者使用Karrigell最容易接觸的兩個概念.Python scripts就是python的腳本,開發者使用print語句輸出到用戶浏覽器的內容.如果你還不明白,建立一個testarea目錄,然後我們將開始創建我們的第一個Python scripts.新建一個文件test.py: print "<center>" print "Hello!" print "<br /><br />" print "Karrigell is configured and working." print "</center>" 在浏覽器中打開這個文件,如果之前你的Karrigell都正確設置,那你將會看到輸出的內容. Python scripts也可以容易的使用表單.讓我們再來創建一個簡單的頁面,用戶可以在這個頁面輸入自己的名字.新建文件askname.py: if QUERY.has_key ( "name" ): print "Your name is", _name + "." else: print "What is your name?<br />" print "<form>" print "<input type='text' name='name' /><br />" print "<input type='submit' value='Proceed' />" print "</form>" Karrigell services的編寫和Python scripts類似.這個的作用是映射請求到用戶指定的方法.指定方法的名字通過跟在Karrigell services後面進行傳遞.比如,下面這個url將會調用test這個方法 [url=http://localhost/testarea/test.ks/test]http://localhost/testarea/test.ks/test[/url] 讓我們實際編寫下這個例子 def index(): print "Index function." def test(): print "Test function." 如果不傳遞方法名而使用這些Python scripts,你的程序會默認執行index方法.如果傳遞了方法名test,那test方法就會被調用.調用一個不存在的方法會抛出異常. 使用Karrigell services來處理表單傳遞的數據也很簡單.讓我們來創建一個ascname.ks def index(): print "What is your name?<br />" print "<form action='nameSubmit'>" print "<input type='text' name='name' /><br />" print "<input type='submit' value='Proceed' />" print "</form>" def nameSubmit ( name ): print "Your name is", name + "." 當然,允許外部公開訪問你的方法是一件很危險的事情,爲了阻止不允許的用戶訪問你的方法,按照下面所述給你的方法加前綴: def _private(): pass 嘗試訪問_private方法將會抛出異常. 使用HIP 在askname.py,有一件事情值得注意,這個代碼镉刑嗟膒rint語句.如果可以不使用print而直接輸出,那將會是一件多麽好的事情.幸運的是,Karrigell提供了這樣的功能.這被稱爲HTML Inside Python,這將清除所有討厭的print語句.並且從askname.py到TML Inside Python的轉換也非常容易.我們只是需要移走那些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語句寫在特殊的標記裏,然後把最終結果發送到用戶的浏覽器.讓我們來創建一個簡單的示例,random.pih <% import random %> Random number: <b><% print random.random() %></b> 正如你說看到的,Python Inside HTML的概念如此的簡單.而其實,代碼塊可以更加的簡單: <%= random.random() %> 但是,如果處理更複雜的邏輯,比如處理表單數據?表單數據可以像在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 %>的使用.這將標識代碼塊的結尾,就像上面我們的條件語句的縮進一樣.另一個可選擇的辦法是使用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還提供了一個良好的接近于面向對象的session機制.讓我們創建一段簡單的代碼來示範Karrigell中的session.回到我們的第一個例子,用戶將會獲得一個幸運數字.如果用戶刷新頁面,該數字仍然存在,因爲這個數字將被保存在sessin中.當然,用戶將可以選擇重新獲取新的幸運數字,這通過關閉sessin來完成.創立一個名爲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>" 結論 Karrigell提供了四種方法來進行web開放,Python scripts,Karrigell services,HTML Inside Python和Python Inside HTML,每種方法都有其特點,但是他們卻都有一個共同的優點:使用簡單.Karrigell 將web開發變成了一件優雅,簡單的事情.無論是單獨使用Karrigell還是和apache結合使用,都是令人吃驚的簡單.因爲,無論是對于初學者,還是老手,Karrigell都是不錯的選擇.
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
竹林裏的甜美養眼美女
MM尖尖的下巴
靓麗的草根美女
超靓迷人的大眼睛美女
海南(二)
霧繞三清山
Oldtime
美麗婺源
 
>>返回首頁<<
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有