1 from socket import *
2 import time
3 sk = socket()
4 sk.bind(("127.0.0.1",8080))
5 sk.listen(5)
6
7 def yimi(url):
8 ret = 'hello{}'.format(url)
9 return bytes(ret,encoding="utf-8")
10
11 def xiaohei(url):
12 ret = 'hello{}'.format(url)
13 return bytes(ret,encoding="utf-8")
14
15 def f404(url):
16 with open("a.html","r",encoding="utf-8") as f:
17 data = f.read();
18 data = data.replace("xx@@xx",str(time.time()))
19 return bytes(data,encoding="utf-8")
20
21 url_func = [("/yimi/",yimi),("/xiaohei/",xiaohei)]
22
23 while True:
24 conn,addr = sk.accept()
25 data = conn.recv(8096)
26 data_str = str(data,encoding="utf-8")
27 #按照换行切分得来的请求信息
28 li = data_str.split("\r\n")
29 #按照空格切分请求信息头部
30 l2 = li[0].split(' ')
31 url = l2[1]
32 conn.send(b'http/1.1 200 ok\r\ncontent-type:text;charset=utf-8;\r\n\r\n')
33 func = None
34 for item in url_func:
35 if item[0] == url:
36 func = item[1]
37 break
38 else:
39 func = f404
40 respon_str = func(url)
41 conn.send(respon_str)
42 conn.close()
43 sk.close()
44
45 #Web框架的本质
46 # Socket服务端与浏览器通信
47 #socket服务端功能划分
48 # a.负责与浏览器收发消息socket b.根据用户访问不同路径执行不同函数 c.从HTML读取内容服务端完成字符串替换返回客户端
49 #Python中Web框架分类
50 # a,b,c Tornado b,c使用第三方a Django b使用第三方a,c Flask
51 #Django大而全做网站的能用到的他都有 Flask轻量级
52 #a与b c之间交互遵循wsgi协议 a模块:wsgi uwsgi gunicorn c模块:jinja2
1 from wsgiref.simple_server import make_server
2 from jinja2 import Template
3
4 def index():
5 with open("2.html","r") as f:
6 data = f.read()
7 template = Template(data) #生成模板文件
8 ret = template.render({"name":"alex","hobby_list":["烫头","泡吧"]})
9 return [bytes(ret,encoding="utf-8")]
10
11 def home():
12 with open("1.html","rb") as f:
13 data = f.read()
14 return [data,]
15 url_list = [('/index/',index),('/home/',home)]
16 def run_server(environ,start_response):
17 start_response('200 ok',[('content-type','text/html;charset=utf-8'),])
18 url = environ['PATH_INFO']
19 func = None
20 for item in url_list:
21 if item[0] == url:
22 func = item[1]
23 break
24 if func:
25 response = func()
26 else:
27 response = "404 Not Found"
28 return response
29
30 if __name__ == "__main__":
31 httpd = make_server("127.0.0.1",8090,run_server)
32 print("我在8090等你哦...")
33 httpd.serve_forever()
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>Title</title>
6 </head>
7 <body>
8 {{name}}
9 <ul>
10 {% for i in hobby_list %}
11 <li>{{i}}</li>
12 {% endfor %}
13 </ul>
14 </body>
15 </html>