Python Web程序搭建简单的Web服务器

作者:微wx笑 时间:2022-08-07 12:33:04 

上一篇讲了《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

Python Web程序搭建简单的Web服务器

可能会弹出防火墙警告,点击允许访问。

Python Web程序搭建简单的Web服务器

在浏览器中访问,查看效果,打开浏览器,输入:http://localhost:8000/,结果如下图:

在文本框中输入一个URL,如(http://blog.csdn.net/testcs_dn),点击Show QR,会生成一张二维码的图片

Python Web程序搭建简单的Web服务器

扫一扫这张二维码看看吧

Python Web程序搭建简单的Web服务器

小结

与其它Web后端语言不同,Python语言需要自己编写Web服务器;

但与Go语言相比,Python稍微有些难以上手。

这里只是编写运行一个简单的例子,看看效果找找感觉。

虽然Python的大名已经知道很久,但最近才真正的接触,文中有不对的地方,有更好的方法还请前辈们多多指教!

2017-12-12更新

此示例的代码在 Eclipse+pydev 环境中打开存在缩进问题,需要 大家注意:

Python Web程序搭建简单的Web服务器

需要调了一下格式   就把下图红框中的代码整体后移了一下:

Python Web程序搭建简单的Web服务器

来源:https://blog.csdn.net/testcs_dn/article/details/50449048

标签:Python,搭建,Web服务器
0
投稿

猜你喜欢

  • 利用django如何解析用户上传的excel文件

    2022-04-04 04:45:20
  • python pygame实现2048游戏

    2021-02-25 15:15:45
  • python打印文件的前几行或最后几行教程

    2022-04-30 01:14:09
  • 利用python3如何给数据添加高斯噪声

    2023-06-11 20:52:17
  • Golang 实现Socket服务端和客户端使用TCP协议通讯

    2023-07-21 10:09:38
  • Python切片知识解析

    2022-06-07 06:31:58
  • Python如何存储和读取ASCII码形式的byte数据

    2021-05-18 04:31:39
  • Access创建一个简单MIS多媒体管理系统

    2008-10-13 12:31:00
  • Python探索之pLSA实现代码

    2022-01-03 11:30:28
  • JavaScript实现简单贪吃蛇效果

    2023-08-13 05:48:08
  • js字符串日期yyyy-MM-dd转化为date示例代码

    2023-08-06 16:35:58
  • MySQL中distinct语句去查询重复记录及相关的性能讨论

    2024-01-16 23:31:27
  • pytorch 预训练模型读取修改相关参数的填坑问题

    2021-11-07 01:08:36
  • django admin组件使用方法详解

    2021-05-28 19:59:53
  • asp 实现的冒泡排序程序

    2011-03-25 11:13:00
  • Adobe AIR beta 2震撼发布!

    2007-10-07 11:57:00
  • 一起来学习Python的列表

    2022-08-04 06:06:23
  • MySQL使用ReplicationConnection导致连接失效解决

    2024-01-19 11:04:26
  • Python使用正则表达式抓取网页图片的方法示例

    2022-11-29 04:11:35
  • 在oracle 数据库查询的select 查询字段中关联其他表的方法

    2009-08-31 12:27:00
  • asp之家 网络编程 m.aspxhome.com