国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Python > 正文

Python Web程序搭建簡單的Web服務(wù)器

2024-09-09 19:02:56
字體:
供稿:網(wǎng)友

上一篇講了《Python入門》Windows 7下Python Web開發(fā)環(huán)境搭建筆記,接下來講一下Python語言Web服務(wù)的具體實(shí)現(xiàn):第一個(gè)Python Web程序――簡單的Web服務(wù)器。

與其它Web后端語言不同,Python語言需要自己編寫Web服務(wù)器。

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

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

用Python建立最簡單的web服務(wù)器

利用Python自帶的包可以建立簡單的web服務(wù)器。在DOS里cd到準(zhǔn)備做服務(wù)器根目錄的路徑下,輸入命令:

python -m Web服務(wù)器模塊 [端口號(hào),默認(rèn)8000]

例如:

python -m SimpleHTTPServer 8080

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

http://localhost:端口號(hào)/路徑

來訪問服務(wù)器資源。 

例如:

http://localhost:8080/index.htm(當(dāng)然index.htm文件得自己創(chuàng)建)

其他機(jī)器也可以通過服務(wù)器的IP地址來訪問。

這里的“Web服務(wù)器模塊”有如下三種:

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

SimpleHTTPServer: 包含執(zhí)行GET和HEAD請(qǐng)求的SimpleHTTPRequestHandler類。

CGIHTTPServer: 包含處理POST請(qǐng)求和執(zhí)行CGIHTTPRequestHandler類。

自定義處理程序

Google在http://chart.apis.google.com 上提供了一個(gè)將表單數(shù)據(jù)自動(dòng)轉(zhuǎn)換為圖表的服務(wù)。不過,該服務(wù)很難交互, 因?yàn)槟阈枰獙?shù)據(jù)作為查詢放到URL中。此程序?yàn)橐环N數(shù)據(jù)格式提供了更好的的接口: 給定一小段文本,它將調(diào)用圖表服務(wù)器來生成二維碼(QR碼),這是一種編碼文本的點(diǎn)格矩陣。 該圖像可被你的手機(jī)攝像頭捕獲,并解釋為一個(gè)字符串,比如URL, 這樣就免去了你在狹小的手機(jī)鍵盤上鍵入U(xiǎn)RL的麻煩。

以下為完整的程序:

import os	#Python的標(biāo)準(zhǔn)庫中的os模塊包含普遍的操作系統(tǒng)功能import re	#引入正則表達(dá)式對(duì)象import urllib	#用于對(duì)URL進(jìn)行編解碼from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler #導(dǎo)入HTTP處理相關(guān)的模塊  #自定義處理程序,用于處理HTTP請(qǐng)求class TestHTTPHandler(BaseHTTPRequestHandler):	#處理GET請(qǐng)求  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> '''  	# 將正則表達(dá)式編譯成Pattern對(duì)象	pattern = re.compile(r'/qr/?s=([^/&]+)/&qr=Show/+QR')	# 使用Pattern匹配文本,獲得匹配結(jié)果,無法匹配時(shí)將返回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'	#設(shè)置協(xié)議版本	self.send_response(200)	#設(shè)置響應(yīng)狀態(tài)碼	self.send_header("Welcome", "Contect")	#設(shè)置響應(yīng)頭	self.end_headers()	self.wfile.write(templateStr % qrImg)	#輸出響應(yīng)內(nèi)容	#啟動(dòng)服務(wù)函數(shù)def start_server(port):  http_server = HTTPServer(('', int(port)), TestHTTPHandler)  http_server.serve_forever()	#設(shè)置一直監(jiān)聽并接收請(qǐng)求 os.chdir('static')	#改變工作目錄到 static 目錄start_server(8000)	#啟動(dòng)服務(wù),監(jiān)聽8000端口
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 登封市| 资溪县| 方山县| 夏津县| 仙桃市| 宜良县| 郴州市| 柳林县| 井冈山市| 衡水市| 河源市| 平罗县| 通城县| 高要市| 乳山市| 富顺县| 仲巴县| 梧州市| 武义县| 永兴县| 彰化市| 温宿县| 潢川县| 偏关县| 玛多县| 廉江市| 周至县| 九台市| 华容县| 清徐县| 鹤庆县| 沧源| 库尔勒市| 安顺市| 衡水市| 宝兴县| 天长市| 合江县| 望谟县| 称多县| 阿荣旗|