Django 代码
day1
不含文件的初级版本
连抄带改
import socketfrom threading import Threadserver = socket.socket()server.bind(('127.0.0.1',8001))server.listen()def func(conn): # 接受请求数据 # 自从用了这个之后 不接收就不渲染 发过去的网页了 client_msg = conn.recv(1024).decode('utf-8') print(client_msg) # 组合响应协议的消息格式,然后发送响应信息 conn.send('HTTP/1.1 200 ok \r\n\r\n'.encode('utf-8')) # 打开index.html文件,返回给前端 with open('01 web 不含文件.html','rb')as f: data = f.read() conn.send(data) # 放在这 否则影响代码渲染 具体为什么? conn.send('who are you '.encode('utf-8')) # 防止资源占用 所以要断开 无保存连接 conn.close()# for i in range(10):while 1 : # 接收连接 如果不在这里会执行100个 只接收了一个,只执行一个线程 # 在外面一次接收多次执行 conn, addr = server.accept() # 有一次发送了源码 没渲染 错开了? 上面有conn,这里也正常渲染了 # conn.send('HTTP/1.1 200 ok \r\n\r\n'.encode('utf-8')) #开启线程并发 t = Thread(target=func , args=(conn,)) t.start()# for i in range(22222):# conn.send(b'b')# conn.close()# server.close()
上传文件的代码
import socketfrom threading import Threadserver = socket.socket()server.bind(('127.0.0.1',8001))server.listen()def func(conn): client_msg = conn.recv(1024).decode('utf-8') will_send = client_msg.split('\r\n')[0].split(' ')[1] # print(client_msg) print(will_send) if will_send == '/': conn.send(b'HTTP/1.1 200 ok \r\n\r\n') with open('01传文件的.html','rb')as f: data = f.read() conn.send(data) conn.close() elif will_send == '/index.css': conn.send(b'HTTP/1.1 200 ok \r\n\r\n') with open('index.css', 'rb')as f: data = f.read() conn.send(data) conn.close() elif will_send == '/index.js': conn.send(b'HTTP/1.1 200 ok \r\n\r\n') with open('index.js', 'rb')as f: data = f.read() conn.send(data) conn.close() elif will_send == '/1.jpg': conn.send(b'HTTP/1.1 200 ok \r\n\r\n') with open('1.jpg', 'rb')as f: data = f.read() conn.send(data) conn.close() elif will_send == '/favicon.ico': conn.send(b'HTTP/1.1 200 ok \r\n\r\n') with open('favicon.ico', 'rb')as f: data = f.read() conn.send(data) conn.close()while 1 : conn,abb = server.accept() T = Thread(target=func, args=(conn,)) T.start() conn 接收在循环里,不在主进程里,实现多少次请求,多少次响应 依然记不住 server.send(b'HTTP/1.1 200 ok \r\n\r\n') 解释 :client_msg.split('\r\n')[1].split(' ')[0] client_msg = GET / HTTP/1.1 Host: 127.0.0.1:8001 Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1..... GET /index.css HTTP/1.1 Host: 127.0.0.1:8001 Connection: keep-alive 本以为会用正则,结果使用client_msg.split(‘/r/n’)[0] 取第一行 然后 .split(' ')[1] 根据空格把/ 这些切出来 / 第一个是/ 所以当是 /的时候 ,把html文件读出来给他 /index.css /index.js /1.jpg /favicon.ico
传文件的网页
Title 欢迎来到20期
index.js alert('ddd dd');index.css h1{ background-color: red; color: #1f87ff; }
day3
index.html 文件Title { { name }}
- {% for hobby in hobbylist %}
- { { hobby }} {% endfor %}