Web框架

 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>

 

posted @ 2019-03-24 09:26  Priceless  阅读(78)  评论(0)    收藏  举报