Django的使用,主要是提供了一个服务器的接口,这样我们的后端和前端就可以通过这个接口来进行交互。如果我们自己来写一个web服务器框架的话,是这样的:
1 import socket 2 3 sk = socket.socket() 4 sk.bind(("127.0.0.1", 8080)) 5 sk.listen(5) 6 7 def login(): 8 with open("login.html", encoding="utf-8") as f: 9 data = f.read() 10 import time 11 time_s = str(time.time()) 12 data_new = data.replace("@@xx@@", time_s) 13 return data_new 14 15 def index(): 16 with open("index.html", encoding="utf-8") as f: 17 data = f.read() 18 # 链接数据库,找数据 19 import pymysql 20 conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="", db="day48", charset="utf-8") 21 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) 22 cursor.execute("select id, name, balance from user") 23 user_list = cursor.fetchall() 24 cursor.close() 25 conn.close() 26 """ 27 <tr> 28 <td>id</td> 29 <td>name</td> 30 <td>balance</td> 31 </tr> 32 """ 33 ret = "" 34 for i in user_list: 35 ret += """ 36 <tr> 37 <td>{0}</td> 38 <td>{1}</td> 39 <td>{2}</td> 40 </tr> 41 """.format(i["id"], i["name"], i["balance"]) 42 data_new = data.replace("@@xx@@", ret) 43 return data_new 44 45 46 def info(): 47 return "这是个人信息页" 48 49 50 url_func_map = [ 51 ("/login/", login), 52 ("/index/", index), 53 ("/info/", info) 54 ] 55 56 57 while True: 58 conn, addr = sk.accept() # 夯在此地,等待链接 59 data = conn.recv(8096) 60 # 类型转换 字节类型-->字符串 61 data_str = str(data, encoding="utf-8") 62 # 取到请求头 63 header = data_str.split("\r\n\r\n")[0] 64 # 再取到 “GET / HTTP/1.1” 65 tmp = header.split("\r\n")[0] 66 # 再按照空格分割,得到列表,取索引值是1的 67 url = tmp.split(" ")[1] 68 conn.send(b"HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\n\r\n") # 响应头 69 # 根据请求URL的不同,我返回不同的内容 70 func_name = None # 定义一个存放将要执行函数的变量 71 # for循环url_func_map 72 for i in url_func_map: 73 if i[0] == url: 74 func_name = i[1] 75 break 76 if func_name: 77 response = func_name() 78 else: 79 response = "404" 80 conn.send(bytes(response, encoding="utf-8")) # 响应体 81 conn.close()