Django框架学习--url

一、web框架

  • web 框架主要简化开发操作,所有的 web 框架的本质都是一个 socket 服务端; 用户通过浏览器进行访问数据,浏览器就是 socket 的客户端。
  • h框架的关键组成部分:MVC 架构,路由(URL), 模本引擎(HTML) , 数据库(ORM) 中间件,静态资源管理器等

        1、这里的是简单的网页发送和回应的代码:

        这里要注意的是可能端口被占用等情况,需要改一下端口号,还有的就是这里需要重新创立一个py文件,不能在django框架下进行。 

  • 这里中文需要gbk,英文需要utf-8的编码
import socket

server = socket.socket()
# 可以设置的端口号:动态端口(1024~65535)
server.bind(('127.0.0.1', 10086))
server.listen(5)
while True:
    sock, address = server.accept()
    data = sock.recv(1024)
    print(data)
    '''
    写到这里的时候进行运行代码,会使得无法响应:
    127.0.0.1 发送的响应无效。
    是因为服务端和客户端之间发送和接收数据的传输协议不同,
    浏览器访问数据是通过 http 协议传输

    通过 http 协议传输数据
    响应报文
    1、响应首行:HTTP 协议以及对应的版本号【HTTP/1.1】,响应状态码【200】 , 响应状态描述【OK】
    2、响应头:数据键值对
    3、空行:\r\n
    4、响应体:我们要发送的数据
    '''
    sock.send('HTTP1.1 200 OK'.encode('utf-8'))
    sock.send('\r\n\r\n'.encode('utf-8'))
    sock.send('hello\r\n'.encode('utf-8'))
    sock.send('阿宸好帅'.encode('gbk'))  #这里都是要使用UTF-8编码整个响应

 2、这里是通过获取url对其进行解析从而进行页面的切换

  • 这里代码中的data的值是:GET /path/to/resource HTTP/1.1 
  • data.split(' ') 会将字符串分割成 ['GET', '/path/to/resource', 'HTTP/1.1']。
  • [1] 获取的是 '/path/to/resource',这就是请求的 URL 路径。
import socket

server = socket.socket()
# 可以设置的端口号:动态端口(1024~65535)
server.bind(('127.0.0.1', 10086))
server.listen(5)

def index():
    # 直接返回字节类型
    return bytes('index 页面' , encoding='gbk')
def num():
    # 直接返回字节类型
    return bytes('num 页面' , encoding='gbk')

# 匹配 url 和 资源
url_dict = {
    '/index' : index,
    '/num' : num,
}

while True:
    sock, address = server.accept()
    data = sock.recv(1024).decode('utf-8')
    url = data.split(' ')[1]
    sock.send('HTTP1.1 200 OK'.encode('utf-8'))
    sock.send('\r\n\r\n'.encode('utf-8'))
    # 判断获取到的 url 在字段中是否存在
    if url in url_dict:
        # 存在调用对应的资源函数
        func = url_dict[url]()  #这里的是匹配对应的路由返回值
        # 将数据发送到客户端
        sock.send(func)
    else:
        sock.send(b'404')

# 浏览器访问资源:127.0.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值