深入了解django原理

本文通过使用socket创建简易Web服务器,深入解析Django的工作原理。演示了如何接收HTTP请求,响应HTML内容,并通过路由机制实现不同的URL处理。代码实例展示了从单一字符串响应到复杂页面映射的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

架构的本质其实就是一个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()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值