web 框架
简单版回复页面框架
- import socket
- server = socket.socket()
- server.bind(('127.0.0.1',8001))
- # 127.0.0.1:8001
- server.listen()
- while 1:
- conn,addr = server.accept()
- from_brower_msg = conn.recv(1024)
- # print(from_brower_msg)
- path = from_brower_msg.decode('utf-8').split(' ')[1]
- print(path)
- conn.send(b'HTTP/1.1 200 ok\r\n\r\n')
- if path == '/':
- with open('04test.html','rb') as f:
- data = f.read()
- elif path == '/style.CSS':
- with open('style.css', 'rb') as f:
- data = f.read()
- elif path == '/test.js':
- with open('test.js', 'rb') as f:
- data = f.read()
- elif path == '/1.jpg':
- with open('1.jpg', 'rb') as f:
- data = f.read()
- conn.send(data)
- conn.close()
进阶函数版框架 + 多线程 Web 框架
- import socket
- from urls import urlpatterns
- from threading import Thread
- server = socket.socket()
- server.bind(('127.0.0.1',8003))
- # 127.0.0.1:8001
- server.listen()
- while 1:
- conn,addr = server.accept()
- from_brower_msg = conn.recv(1024)
- # print(from_brower_msg)
- path = from_brower_msg.decode('utf-8').split(' ')[1]
- print(path)
- conn.send(b'HTTP/1.1 200 ok\r\n\r\n')
- for url in urlpatterns:
- if path == url[0]:
- # ret = url[1]()
- t = Thread(target=url[1],args=(conn,))
- t.start()
- break
- # else:
- # t = Thread(target=nofount,args=(conn,))
- # t.start()
- # if path == '/':
- # ret = home()
- # # t = Thread(target=home,)
- # # t.start()
- #
- # elif path == '/style.css':
- # ret = CSS()
- #
- # elif path == '/test.js':
- # ret = JS()
- #
- # elif path == '/1.jpg':
- # ret = pic()
动态页面的 Web 框架
- import socket
- from urls import urlpatterns
- from threading import Thread
- server = socket.socket()
- server.bind(('127.0.0.1',8003))
- # 127.0.0.1:8001
- server.listen()
- while 1:
- conn,addr = server.accept()
- from_brower_msg = conn.recv(1024)
- # print(from_brower_msg)
- path = from_brower_msg.decode('utf-8').split(' ')[1]
- print(path)
- conn.send(b'HTTP/1.1 200 ok\r\n\r\n')
- for url in urlpatterns:
- if path == url[0]:
- # ret = url[1]()
- t = Thread(target=url[1],args=(conn,))
- t.start()
- break
不同 HTML 页面 Web 框架
- import socket
- from urls import urlpatterns
- from threading import Thread
- server = socket.socket()
- server.bind(('127.0.0.1',8003))
- # 127.0.0.1:8001
- server.listen()
- while 1:
- conn,addr = server.accept()
- from_brower_msg = conn.recv(1024)
- # print(from_brower_msg)
- path = from_brower_msg.decode('utf-8').split(' ')[1]
- print(path)
- conn.send(b'HTTP/1.1 200 ok\r\n\r\n')
- for url in urlpatterns:
- if path == url[0]:
- # ret = url[1]()
- t = Thread(target=url[1],args=(conn,))
- t.start()
- break
wsgiref 模块
- from wsgiref.simple_server import make_server
- from urls import urlpatterns
- def application(environ,start_response):
- # environ 所有请求相关信息
- # start_response -- 封装响应数据格式
- print('当前请求路径',environ['PATH_INFO'])
- path = environ['PATH_INFO']
- start_response('200 ok',[]) # conn.send(b'HTTP/1.1 200 ok\r\n\r\n')
- for url in urlpatterns:
- if path == url[0]:
- ret = url[1]()
- return [ret]
- if __name__ == '__main__':
- h = make_server('127.0.0.1', 8080, application)
- h.serve_forever()
jinja2 模块
- <!DOCTYPE HTML>
- <HTML lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="x-ua-compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>
- Title
- </title>
- </head>
- <body>
- <h1>
- 姓名:{{name}}
- </h1>
- <h1>
- 爱好:
- </h1>
- <ul>
- {% for hobby in hobby_list %}
- <li>
- {{hobby}}
- </li>
- {% endfor %}
- </ul>
- </body>
- </HTML>
- from wsgiref.simple_server import make_server
- from jinja2 import Template
- def index():
- with open("index2.html", "r",encoding='utf-8') as f:
- data = f.read()
- template = Template(data) # 生成模板文件
- ret = template.render({"name": "于谦", "hobby_list": ["烫头", "泡吧"]}) # 把数据填充到模板里面
- return [bytes(ret, encoding="utf8"), ]
- # 定义一个 url 和函数的对应关系
- URL_LIST = [
- ("/index/", index),
- ]
- def run_server(environ, start_response):
- start_response('200 OK', [('Content-Type', 'text/html;charset=utf8'), ]) # 设置 HTTP 响应的状态码和头信息
- url = environ['PATH_INFO'] # 取到用户输入的 url
- func = None # 将要执行的函数
- for i in URL_LIST:
- if i[0] == url:
- func = i[1] # 去之前定义好的 url 列表里找 url 应该执行的函数
- break
- if func: # 如果能找到要执行的函数
- return func() # 返回函数的执行结果
- else:
- return [bytes("404 没有该页面", encoding="utf8"), ]
- if __name__ == '__main__':
- httpd = make_server('', 8000, run_server)
- print("Serving HTTP on port 8000...")
- httpd.serve_forever()
来源: http://www.bubuko.com/infodetail-3304892.html