webpy

url處理
對於一個站點來講,URL 的組織是最重要的一個部分,由於這是用戶看獲得的部分,並且直接影響到站點是如何工做的,在著名的站點如:del.icio.us ,其URLs 甚至是網頁界面的一部分。而web.py 以簡單的方式就可以構造出一個強大的URLs。
在每一個web.py 應用,必須先import web 模塊:
import web
如今,咱們需要告訴web.py URL 如何組織,讓咱們以一個簡單例子開始:
urls = (
'/', 'index' )
在上面的例子中,第一部分(‘/’)是一個匹配URL 的正則表達式,像/,/help/faq,/item/(\d+),等等;第二部分(‘index’)是一個類名,匹配的請求將會被髮送過去。
如今,咱們須要編寫index 類。當大部人瀏覽網頁的時候,他們都沒有注意到,瀏覽器是經過HTTP 跟World Wide Web 通訊的。通訊的細節不過重要,但要明白一點,用戶是經過URLs(例如 / 或者 /foo?f=1)來請求web 服務器完成必定請求的(例如 GET 或者POST)。
GET 是最廣泛的方法,用來請求一個頁面。當咱們在瀏覽器裏輸入「harvard.edu」 的時候,實際上它是向Web 服務器請求GET 」/「。另外一個常見的方法是POST,經常使用於提交特定類型的表單,例如利用信用卡付費和處理一個訂單。注意,GET URLs 可以被搜索引擎索引獲得(想像一下Google 嘗試購買你網站上的所用物品)。
在咱們的web.py 代碼中。咱們清晰區分這兩種方法:
class index:
def GET(self):
print "Hello, world!"
當接收到一個GET 請求時,上面的GET 方法將會被web.py 調用。
好的。如今,咱們只需添加最後一行代碼,讓web.py 啓動網頁應用:
if __name__ == "__main__": web.run(urls, globals())
上面告訴web.py 如何配置URLs,以及找尋的類在文件中的全局命名空間。
整個code.py 文件的內容以下:
import web
urls = (
'/', 'index' )
class index:
def GET(self):
print "Hello, world!"
if __name__ == "__main__": web.run(urls, globals())
注意到沒有,雖然我說了不少東西,但實際上web 應用的代碼就只得上面的幾行,並且這是一個完整的web.py 應用。在你的命令行下輸入:
$ python code.py
Launching server: http://0.0.0.0:8080/
如今,你的web.py 應用已經啓動了服務器。經過瀏覽器訪問http://localhost:8080/ 的話,會見到」Hello, world!「。在啓動服務器的時候,你能夠在python code.py 後面添加IP 地址/端口 來控制web.py 啓動的服務器。例如:python code.py 8888。

3調試編輯

web.py 自己也提供調試的工具。在最後的「if name …」 代碼前面添加:
web.webapi.internalerror = web.debugerror
並在最後的「if name …」 添加」web.reloader「:
if __name__ == "__main__": web.run(urls, globals(), web.reloader)
上面的代碼會使你在調試的階段獲得更多有用的信息。web.reloader 實際上是一箇中間件,當你在運行時修改了code.py 文件後,web.reloader 會從新加載code.py 文件,讓你在瀏覽器上馬上能夠看到變化。如何有多何變化的話,仍是須要從新啓動服務器。web.py 也提供web.profiler ,能夠輸出有用的信息,有關每一個頁面的每一個函數調用的次數,這用助於你改善代碼。
web.py 的確至關的小巧,應當歸屬於輕量級的web 框架。但這並不影響web.py 的強大,並且使用起來很簡單、很直接。在實際應用上,web.py 更多的是學術上的價值,由於你能夠看到更多web 應用的底層,這在當今「抽象得很好」的web 框架上是學不到的 :) 若是想了解更多web.py,能夠訪問web.py 的官方文檔。

4開發編輯

web.py 內置了web服務器。能夠按照 tutorial 學習如何寫一個Web應用。 寫完後,將你的代碼放到 code.py 並以下面的方法來啓動服務器:
python code.py
打開你的瀏覽器輸入 http://localhost:8080/ 查看頁面。 若要制定另外的端口,使用 python code.py 1234。

產品

如今所運行 web.py 程序的web服務器是挺不錯的, 但絕大多數網站仍是須要更加專業一些的web服務器。web.py 實現了 WSGI 並能在任何兼容它的服務器上運行。 WSGI 是一個web服務器與應用程序之間的通用API, 就如Java 的 Servlet 接口。 你須要安裝 flup (download here) 使web.py 支持with CGI, FastCGI 或 SCGI, flup提供了這些API的WSGI接口。
詳細的參考官網: http://webpy.org/cookbook/index.zh-cn
轉自:http://baike.baidu.com/view/5493106.htm?fr=aladdin
相關文章
相關標籤/搜索