web框架
Posted 隔壁老梁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web框架相关的知识,希望对你有一定的参考价值。
Web框架本质
对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。
1 #!/usr/bin/env python 2 #coding:utf-8 3 4 import socket 5 6 def handle_request(client): 7 buf = client.recv(1024) #获取客户端发过来的数据 8 client.send("HTTP/1.1 200 OK\r\n\r\n") 9 client.send("Hello, Seven") 10 11 def main(): 12 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #创建一个socket服务端对象 13 sock.bind((‘localhost‘,8000)) #监听8000端口 14 sock.listen(5) #最多5个连接 15 16 while True: #一直在等待连接 17 connection, address = sock.accept() #如果有连接,就会获取到值 18 handle_request(connection) #获取到值之后调用handle_request处理 19 connection.close() #处理完成这个请求后断开这次连接 20 21 if __name__ == ‘__main__‘: 22 main()
所有web框架的本质就是这20几行代码
python标准库提供的独立WSGI服务器称为wsgiref。
1 #!/usr/bin/env python 2 #coding:utf-8 3 4 from wsgiref.simple_server import make_server 5 6 def RunServer(environ, start_response):
#environ 客户端发来的所有数据
#start_response 封装要返回给用户的数据(响应头、状态之类的)
7 start_response(‘200 OK‘, [(‘Content-Type‘, ‘text/html‘)])
8 return ‘<h1>Hello, web!</h1>‘
#返回的内容
python3中:
#return [‘<h1>Hello, web!</h1>‘.encode(‘utf-8‘)](返回的是列表形式)
10 if __name__ == ‘__main__‘: 11 httpd = make_server(‘‘, 8000, RunServer) 12 print "Serving HTTP on port 8000..." 13 httpd.serve_forever()
#查看请求,通过pycharm断点
自定义Web框架
web框架定义好后,所有用户来访问都是返回的同一个内容,通过请求中的内容(url)区分,返回不同的内容
MVC
Model view Controller
数据库 模板文件 业务处理
MTV
Model view Controller
数据库 模板文件 业务处理
区别就是文件夹名字的区别,处理过程是一样的
以上是关于web框架的主要内容,如果未能解决你的问题,请参考以下文章