你知道Python同時你希望制作一個網站。 那麼web.py正好提供了一種簡單的方法。
如果你希望讀完整個指南, 你需要安裝Python, web.py, flup, psycopg2, 和Postgres (或者等價的數據庫和Python驅動)。 詳細,可以查看 webpy.org.
如果你已經有了一個web.py項目,請看看升級 頁面的相關信息。
准備開始。
任何網站最重要的部分就是它的URL結構。你的URL並不僅僅只是訪問者所能看到並且能發給朋友的。它還規定了你網站運行的心智模型。在一些類似del.icio.us的流行網站 , URL甚至是UI的一部分。 web.py使這類強大的URL成為可能。
在開始你的web.py程序之前,打開一個文本文件(文件名為code.py)輸入:
import web
這條語句會導入web.py模塊。
現在我們需要把我們的URL結構告訴web.py。讓我從下面這個簡單的例子開始:
urls = ( '/', 'index' )
第一部分是匹配URL的正則表達式,像/
、/help/faq
、/item/(\d+)
等(\d+
將匹配數字)。圓括號表示捕捉對應的數據以便後面使用。第二部分是接受請求的類名稱,像index
、view
、welcomes.hello
(welcomes
模塊的hello
類),或者get_\1
。\1
會被正則表達式捕捉到的內容替換,剩下來捕捉的的內容將被傳遞到你的函數中去。
這行表示我們要URL/
(首頁)被一個叫index
的類處理。
現在我們需要創建一個列舉這些url的application。
app = web.application(urls, globals())
這會告訴web.py去創建一個基於我們剛提交的URL列表的application。這個application會在這個文件的全局命名空間中查找對應類。
現在我們需要來寫index
類。雖然大多數人只會看看,並不會注意你的浏覽器在使用用於與萬維網通信的HTTP語言。具體的細節並不重要,但是要理解web訪問者請求web服務器去根據URL(像/
、/foo?f=1
)執行一個合適的函數(像GET
、POST
)的基本思想。
GET
是我們都熟悉的。它用於請求網頁文本。當你在浏覽器輸入harvard.edu
,它會直接訪問Harvard的web服務器,去GET /
。 第二個最有名的是POST
,它經常被用在提交form,比如請求買什麼東西。每當提交一個去做什麼事情(像使用信用卡處理一筆交易)的請求時,你可以使用POST
。這是關鍵,因為GET
的URL可以被搜索引擎索引,並通過搜索引擎訪問。雖然大部分頁面你希望被索引,但是少數類似訂單處理的頁面你是不希望被索引的 (想象一下Google嘗試去購買你網站上的所有東西)。
在我們web.py的代碼中,我們將這兩個方法明確區分:
class index: def GET(self): return "Hello, world!"
當有人用GET
請求/
時,這個GET
函數隨時會被web.py調用。
好了,限制我們只需要最後一句就寫完了。這行會告訴web.py開始提供web頁面:
if __name__ == "__main__": app.run()
這會告訴web.py為我們啟動上面我們寫的應用。
現在注意,即使我已經在這裡說了很多,但我們真正有5行這些代碼。這就是你需要編寫的一個完整的web.py應用。如果你在命令行下面,請輸入:
$ python code.py http://0.0.0.0:8080/
下面附上我寫的一段代碼:
如下所示:
打印出Hello, World!
輸入庫http://localhost:8080/mingg
打印出Hello, mingg!