1. Web框架本质:对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端
import socket
def handle_request(client):
buf = client.recv(1024)
client.send("HTTP/1.1 200 OK\r\n\r\n")
client.send("Hello World")
def main():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost", 8000))
s.listen(5)
while True:
connection, address = s.accept()
handle_request(connection)
connection.close()
if __name__ == '__main__':
main()
上述通过socket实现了其本质,而对于真实开发中的python web程序来说,一般会分为两部分:服务器程序和应用程序。服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理。
2. 简单的Web框架案例
# -*-coding:utf-8-*-
from wsgiref.simple_server import make_server
def new():
return "new"
def index():
return "index"
URLS = {
"/new":new,
"/index":index,
}
def RunServer(environment, start_response):
start_response("200 OK", [("Content-Type", "text/html")])
# 获取用户URL
url = environment['PATH_INFO']
if url in URLS.keys():
func_name = URLS[url]
ret = func_name()
else:
ret = "404"
return ret
if __name__ == '__main__':
httpd = make_server('', 8000, RunServer)
httpd.serve_forever()
3. 常用的Web框架模式
MVC框架:
- Models 数据相关操作
- Views 模板HTML文件
- Controllers 业务逻辑
MTV框架:
- Models 数据相关操作
- Templates 模板HTML文件
- Views 业务逻辑