web.py is a web framework for Python that is as simple as it is powerful. web.py is in the public domain; you can use it for whatever purpose with absolutely no restrictions.
下面先在Windows下搭建web.py環境,網上提供的方法大部分是先把原始碼包下載下來,然後進入後python setup.py install 安裝,但是用這種方法我總是安裝失敗。原因猜測是我的python版本和web.py版本匹配問題,後來解決方法是:透過pip安裝。
在Windows DOS窗口裡輸入:pip install web.py==0.40
pip如果不識別,需要在環境變數PATH中新增C:/Python27/Scripts
它會提示如下錯誤資訊:
這時輸入python -m pip install --upgrade pip
之後再重新輸入pip install web.py==0.40
就不再報錯了。
安裝成功後,進入到目錄裡執行:python hello.py
hello.py內容如下:
import web urls = ('/hello', 'hello', ) class hello(object): def GET(self): return 'hello world!' if __name__ == "__main__": app = web.application(urls, globals()) app.run()
瀏覽器中輸入:
在阿里雲上部署,也是完全一樣的操作。
我們來解釋下這段程式碼:
第1行: import web, 在每個web.py 應用,必須先import web 模組
第3行: 把URL結構告訴web.py
第一部分是匹配URL的正則表示式,比如例子中的'/hello',對應你在瀏覽器中輸入的URL是localhost:8080/hello,如果你把改成hello2,你再輸入原來URL就無法正常訪問了,
你得改成如下URL才行
如果你改成
urls = ('/', 'hello',
)
直接這麼輸入就行了
第二部分是接受請求的類名稱。
第6-8行:
對應上面的hello,是一個類,
GET用於請求網頁文字。
下面是返回的東西,也就是我們網頁看到的東西
當有人用GET請求/時,這個GET函式隨時會被web.py呼叫。
第10行:
一個python檔案通常有兩種使用方法,第一是作為指令碼直接執行,第二是 import 到其他的 python 指令碼中被呼叫(模組重用)執行。因此 if __name__ == 'main': 的作用就是控制這兩種情況執行程式碼的過程,在 if __name__ == 'main': 下的程式碼只有在第一種情況下(即檔案作為指令碼直接執行)才會被執行,而 import 到其他指令碼中是不會被執行的。
第11行:
這會告訴web.py去建立一個基於我們剛提交的URL列表的application。這個application會在這個檔案的全域性名稱空間中查詢對應類。
第12行:
這會告訴web.py為我們啟動上面我們寫的應用。