1. 程式人生 > >《Python入門》第一個Python Web程式——簡單的Web伺服器

《Python入門》第一個Python Web程式——簡單的Web伺服器

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

 上一篇講了《Python入門》Windows 7下Python Web開發環境搭建筆記,接下來講一下Python語言Web服務的具體實現:第一個Python Web程式——簡單的Web伺服器。

與其它Web後端語言不同,Python語言需要自己編寫Web伺服器。

如果你使用一些現有的框架的話,可以省略這一步;

如果你使用Python CGI程式設計的話,也可以省略這一步;

用Python建立最簡單的web伺服器

利用Python自帶的包可以建立簡單的web伺服器。在DOS裡cd到準備做伺服器根目錄的路徑下,輸入命令:

python -m Web伺服器模組 [埠號,預設8000]

例如:

python -m SimpleHTTPServer 8080

然後就可以在瀏覽器中輸入

http://localhost:埠號/路徑

來訪問伺服器資源。 

例如:

http://localhost:8080/index.htm(當然index.htm檔案得自己建立)

其他機器也可以通過伺服器的IP地址來訪問。

這裡的“Web伺服器模組”有如下三種:

BaseHTTPServer: 提供基本的Web服務和處理器類,分別是HTTPServer和BaseHTTPRequestHandler。

SimpleHTTPServer: 包含執行GET和HEAD請求的SimpleHTTPRequestHandler類。

CGIHTTPServer: 包含處理POST請求和執行CGIHTTPRequestHandler類。

自定義處理程式

Google在http://chart.apis.google.com 上提供了一個將表單資料自動轉換為圖表的服務。不過,該服務很難互動, 因為你需要將資料作為查詢放到URL中。此程式為一種資料格式提供了更好的的介面: 給定一小段文字,它將呼叫圖表伺服器來生成二維碼(QR碼),這是一種編碼文字的點格矩陣。 該影象可被你的手機攝像頭捕獲,並解釋為一個字串,比如URL, 這樣就免去了你在狹小的手機鍵盤上鍵入URL的麻煩。

以下為完整的程式:

import os #Python的標準庫中的os模組包含普遍的作業系統功能import re #引入正則表示式物件import urllib #用於對URL進行編解碼from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler  #匯入HTTP處理相關的模組#自定義處理程式,用於處理HTTP請求class TestHTTPHandler(BaseHTTPRequestHandler): #處理GET請求    def do_GET(self):  #頁面輸出模板字串        templateStr = '''  <html>  <head>  <title>QR Link Generator</title>  </head>  <body>  %s<br>  <br>  <form action="/qr" name=f method="GET"><input maxLength=1024 size=70  name=s value="" title="Text to QR Encode"><input type=submit  value="Show QR" name=qr>  </form></body>  </html> ''' # 將正則表示式編譯成Pattern物件 pattern = re.compile(r'/qr\?s=([^\&]+)\&qr=Show\+QR'# 使用Pattern匹配文字,獲得匹配結果,無法匹配時將返回None match = pattern.match(self.path) qrImg = ''   if match:  # 使用Match獲得分組資訊  qrImg = '<img src="http://chart.apis.google.com/chart?chs=300x300&cht=qr&choe=UTF-8&chl=' + match.group(1) + '" /><br />' + urllib.unquote(match.group(1))  self.protocal_version = 'HTTP/1.1' #設定協議版本 self.send_response(200#設定響應狀態碼 self.send_header("Welcome", "Contect"#設定響應頭 self.end_headers() self.wfile.write(templateStr % qrImg) #輸出響應內容 #啟動服務函式def start_server(port):    http_server = HTTPServer(('', int(port)), TestHTTPHandler)    http_server.serve_forever() #設定一直監聽並接收請求os.chdir('static'#改變工作目錄到 static 目錄start_server(8000#啟動服務,監聽8000埠

執行訪問

我這裡將上面上程式碼儲存為:C:\Python\webserver\server1.py,使用UTF-8編碼;

開啟命令列,切換到 C:\Python\webserver\ 目錄,

執行:python server1.py

可能會彈出防火牆警告,點選允許訪問。


在瀏覽器中訪問,檢視效果,開啟瀏覽器,輸入:http://localhost:8000/,結果如下圖:

在文字框中輸入一個URL,如(http://blog.csdn.net/testcs_dn),點選Show QR,會生成一張二維碼的圖片


掃一掃這張二維碼看看吧


小結

與其它Web後端語言不同,Python語言需要自己編寫Web伺服器;

但與Go語言相比,Python稍微有些難以上手。

這裡只是編寫執行一個簡單的例子,看看效果找找感覺。

雖然Python的大名已經知道很久,但最近才真正的接觸,文中有不對的地方,有更好的方法還請前輩們多多指教!

2017-12-12更新

此示例的程式碼在 Eclipse+pydev 環境中開啟存在縮排問題,需要 大家注意:


需要調了一下格式   就把下圖紅框中的程式碼整體後移了一下:


參考:

Python 基礎教程

一起寫一個 Web 伺服器

深入理解 Python WSGI:一起寫一個 Web 伺服器


           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述