架构的本质其实就是一个socket

下面代码体现django原理

import socket
server_sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_sk.bind((‘127.0.0.1’,8888))(设置端口号)
server_sk.listen(128)(高并发支持数量)

while True:
new_sk , addr=server_sk.accept()
content = new_sk.recv(1024).decode()
print(content)

new_sk.send('HTTP/1.1   200 OK\r\n'.encode())
new_sk.send('Content-Type:text/html;charset=utf-8\r\n'.encode())
new_sk.send('\r\n'.encode())
new_sk.send("孙悟空".encode())
new_sk.close()

server_sk.close()

(在浏览器中打开的结果)
在这里插入图片描述
这就实现了字符串在浏览器中打开

(print结果)

在这里插入图片描述

改进上述代码

import socket
server_sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_sk.bind((‘127.0.0.1’,8888))
server_sk.listen(128)

def index(url):
s = ‘这是{}页面’.format(url).encode()
return s

def hero_list(url):
s = ‘这是{}页面’.format(url).encode()
return s
def error(url):
s=‘404页面’.encode()
return s

func_list = [
(’/index’,index),
(’/hero_list’,hero_list),
(’/error’,error)
]
while True:
new_sk, addr = server_sk.accept()
content = new_sk.recv(1024).decode()
con = content.split(’\r\n’)[0] #切片获得请求首行在这里插入图片描述
url = con.split(’ ')[1] #切片获得所需输入路径(在浏览器中输入 127.0.0.1:8888/index)则index,出现在请求首行如图所示)
在这里插入图片描述
(浏览器中显示)
在这里插入图片描述

f=None
for func  in func_list:
    if func[0] == url:
        f=func[1]
if f:
    response=f(url)
else:
    response=error(url)
new_sk.send('HTTP/1.1 200 OK\r\n'.encode())
new_sk.send('Content-Type:text/html;charset=utf-8\r\n'.encode())
new_sk.send('\r\n'.encode())
new_sk.send(response)
new_sk.close()

server_sk.close()

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐