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.165     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()
自己写web服务器框架

相关文章:

  • 2022-12-23
猜你喜欢
  • 2021-11-12
  • 2021-09-30
  • 2021-08-09
  • 2021-12-09
  • 2022-03-03
相关资源
相似解决方案