歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

在Python 2.7下面使用webpy框架

開始

你知道Python同時你希望制作一個網站。 那麼web.py正好提供了一種簡單的方法。

如果你希望讀完整個指南, 你需要安裝Python, web.py, flup, psycopg2, 和Postgres (或者等價的數據庫和Python驅動)。 詳細,可以查看 webpy.org.

如果你已經有了一個web.py項目,請看看升級 頁面的相關信息。

准備開始。

URL 處理

任何網站最重要的部分就是它的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+將匹配數字)。圓括號表示捕捉對應的數據以便後面使用。第二部分是接受請求的類名稱,像indexviewwelcomes.hello(welcomes模塊的hello類),或者get_\1\1 會被正則表達式捕捉到的內容替換,剩下來捕捉的的內容將被傳遞到你的函數中去。

這行表示我們要URL/(首頁)被一個叫index的類處理。

現在我們需要創建一個列舉這些url的application。

app = web.application(urls, globals())

這會告訴web.py去創建一個基於我們剛提交的URL列表的application。這個application會在這個文件的全局命名空間中查找對應類。

GET和POST: 區別

現在我們需要來寫index類。雖然大多數人只會看看,並不會注意你的浏覽器在使用用於與萬維網通信的HTTP語言。具體的細節並不重要,但是要理解web訪問者請求web服務器去根據URL(像//foo?f=1)執行一個合適的函數(像GETPOST)的基本思想。

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/


下面附上我寫的一段代碼:

如下所示:

  1. ''''' 
  2. Created on 2011-11-29 
  3.  
  4. @author: LONMID 
  5. '''  
  6. import web  
  7.   
  8. urls = (  
  9.     '/(.*)''hello'  
  10. )  
  11. app = web.application(urls, globals())  
  12.   
  13. class hello:          
  14.     def GET(self, name):  
  15.         if not name:   
  16.             name = 'World'  
  17.         return 'Hello, ' + name + '!'  
  18.   
  19. if __name__ == "__main__":  
  20.     app.run()  
在地址欄輸入: http://localhost:8080/ 即可

打印出Hello, World!

輸入庫http://localhost:8080/mingg

打印出Hello, mingg!

Copyright © Linux教程網 All Rights Reserved