《Python新手入门》第一个Python Web程序——简易的Web网络服务

語言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在上出示了一个将表格数据信息全自动变换为数据图表的服务。但是,该服务难以互动, 由于你必须将数据信息做为查寻放进URL中。此程序为一种数据信息文件格式出示了更强的的插口: 给定一小段文字,它将启用数据图表网络服务器来转化成二维码(QR码),它是一种编号文字的点格引流矩阵。 该图象可被你的手机上拍摄头捕捉,并表述为一字符串,例如URL, 那样就免除了你一直在狭窄的手机上电脑键盘上输入URL的不便。

下列为详细的程序:

[python]

importos #Python的规范库文件的os控制模块包括广泛的实际操作系统软件作用

importre #引进正则表达式表述式目标

importurllib #用以对URL开展编编解码

fromBaseHTTPServer importHTTPServer, BaseHTTPRequestHandler #导进HTTP解决有关的控制模块


#自定解决程序,用以解决HTTP恳求

classTestHTTPHandler(BaseHTTPRequestHandler):

#解决GET恳求

defdo_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 = repile(r'/qr?s=([^ ]+) qr=Show+QR')

# 应用Pattern配对文字,得到配对結果,没法配对时将回到None

match = pattern.match(self.path)

qrImg = ''

ifmatch:

# 应用Match得到排序信息内容

qrImg = ' img src="http://chart.apis.google/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) #輸出响应內容

#起动服务涵数

defstart_server(port):

http_server = HTTPServer(('', int(port)), TestHTTPHandler)

http_server.serve_forever() #设定一直监视并接受恳求

os.chdir('static') #更改工作中文件目录到 static 文件目录

start_server(8000) #起动服务,监视8000端口号

importos #Python的规范库文件的os控制模块包括广泛的实际操作系统软件作用

importre #引进正则表达式表述式目标

importurllib #用以对URL开展编编解码

fromBaseHTTPServer importHTTPServer, BaseHTTPRequestHandler #导进HTTP解决有关的控制模块

#自定解决程序,用以解决HTTP恳求

classTestHTTPHandler(BaseHTTPRequestHandler):

#解决GET恳求

defdo_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 = repile(r'/qr?s=([^ ]+) qr=Show+QR')

# 应用Pattern配对文字,得到配对結果,没法配对时将回到None

match = pattern.match(self.path)

qrImg = ''

ifmatch:

# 应用Match得到排序信息内容

qrImg = ' img src="http://chart.apis.google/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) #輸出响应內容

#起动服务涵数

defstart_server(port):

http_server = HTTPServer(('', int(port)), TestHTTPHandler)

http_server.serve_forever() #设定一直监视并接受恳求

os.chdir('static') #更改工作中文件目录到 static 文件目录

start_server(8000) #起动服务,监视8000端口号

我这儿将上边上编码储存为:C:Pythonwebserverserver1.py,应用UTF-8编号;

开启指令行,转换到 C:Pythonwebserver 文件目录,

实行:python server1.py

将会会弹出来防火安全墙警示,点一下容许浏览。

在访问器中浏览,查询实际效果,开启访问器,键入:,結果以下图:

在文字框中键入一个URL,如(http://blog.csdn/testcs_dn),点一下Show QR,会转化成一张二维码的照片

扫一扫这张二维码看一下吧

总结

两者之间它Web后端开发語言不一样,Python語言必须自身撰写Web网络服务器;

但与語言对比,Python略微一些无法入门。

这儿仅仅撰写运作一个简易的事例,看一下实际效果找找觉得。

尽管Python的名字早已了解好长时间,但近期才真实的触碰,原文中有错误的地区,有更强的方式还请老前辈们多多的赐教!

长按住方照片