一. http协议

  1.请求方法(get和post)

1.GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.(请求头里面那个content-type做的这种参数形式,后面讲)

2.POST方法是把提交的数据放在HTTP包的请求体中.GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

  2.请求协议(格式)

  3.响应协议(格式)

  4.状态码

二.简单的web框架

  1.最简单的(所需文件放在响应目录下)

import socket
server = socket.socket()
server.bind(('127.0.0.1',8080))
server.listen()while 1:conn, addr = server.accept()from_b_msg = conn.recv(1024).decode('utf-8')# print(from_b_msg) #客户端的请求内容# 获得请求文件path = from_b_msg.split('\r\n')[0].split(' ')[1]print(path)conn.send(b'HTTP/1.1 200 ok\r\n\r\n')# conn.send(b'<h1>hello</h1>')    #发送需要的文件if path == '/':with open('test.html', 'rb') as f:data = f.read()conn.send(data)conn.close()elif path == '/test.css':with open('test.css','rb') as f:data = f.read()conn.send(data)conn.close()elif path == '/timg.jpg':with open('timg.jpg', 'rb') as f:data = f.read()conn.send(data)conn.close()elif path == '/test.js':with open('test.js', 'rb') as f:data = f.read()conn.send(data)conn.close()elif path == '/meinv.ico':with open('meinv.ico', 'rb') as f:data = f.read()conn.send(data)conn.close()

  2.多线程框架(所需文件放在响应目录下)

from threading import Thread
import socket
server = socket.socket()
# server.bind(('192.168.12.45',8080))
server.bind(('127.0.0.1',8080))
server.listen()def html(conn):with open('test.html', 'rb') as f:data = f.read()conn.send(data)conn.close()
def js(conn):with open('test.js', 'rb') as f:data = f.read()conn.send(data)conn.close()
def css(conn):with open('test.css', 'rb') as f:data = f.read()conn.send(data)conn.close()
def img(conn):with open('timg.jpg', 'rb') as f:data = f.read()conn.send(data)conn.close()
def ico(conn):with open('meinv.ico', 'rb') as f:data = f.read()conn.send(data)conn.close()
urlpatterns=[('/',html),('/test.css',css),('/timg.jpg',img),('/test.js',js),('/meinv.ico',ico),
]
while 1:conn, addr = server.accept()from_b_msg = conn.recv(1024).decode('utf-8')print(from_b_msg)path = from_b_msg.split('\r\n')[0].split(' ')[1]# print(path)conn.send(b'HTTP/1.1 200 ok\r\nk1:v1\r\n\r\n')# conn.send(b'<h1>hello</h1>')for url_func in urlpatterns:if url_func[0] == path:#多线程函数版t = Thread(target=url_func[1],args=(conn,))t.start()# 简单函数版# url_func[1](conn)

  3.多个页面切换和动态效果(所需文件放在响应目录下)

  ①python文件 

from threading import Thread
import socket
server = socket.socket()
# server.bind(('192.168.12.45',8080))
server.bind(('127.0.0.1',8080))
server.listen()import datetime
def base(conn):with open('base.html','r',encoding='utf-8') as f:data = f.read()t1 = datetime.datetime.now()new_data = data.replace('@xx@',str(t1))conn.send(new_data.encode('utf-8'))
def index(conn):with open('index.html', 'rb') as f:data = f.read()conn.send(data)
def home(conn):with open('home.html', 'rb') as f:data = f.read()conn.send(data)
def articles(conn):with open('art.html', 'rb') as f:data = f.read()conn.send(data)
urlpatterns=[('/',base),('/index',index),('/home',home),('/articles',articles),
]while 1:conn, addr = server.accept()from_b_msg = conn.recv(1024).decode('utf-8')print(from_b_msg)path = from_b_msg.split('\r\n')[0].split(' ')[1]# print(path)conn.send(b'HTTP/1.1 200 ok\r\nk1:v1\r\n\r\n')# conn.send(b'<h1>hello</h1>')for url_func in urlpatterns:if url_func[0] == path:#多线程函数版t = Thread(target=url_func[1],args=(conn,))t.start()# 简单函数版# url_func[1](conn)

  ②html文件

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Bootstrap 101 Template</title>
</head>
<body>
<h1 style="color: purple;">欢迎来到王者荣耀页面</h1>
<a href="http://127.0.0.1:8080/index">这是index</a>
<a href="http://127.0.0.1:8080/home">这是home</a>
<h1 style="color: pink;">@xx@</h1></body>
</html>

  4.wsgire模块板web框架

from wsgiref.simple_server import make_server
# wsgiref本身就是个web框架,提供了一些固定的功能(请求和响应信息的封装,不需要我们自己写原生的socket了也不需要咱们自己来完成请求信息的提取了,提取起来很方便)
#函数名字随便起
def application(environ, start_response):''':param environ: 是全部加工好的请求信息,加工成了一个字典,通过字典取值的方式就能拿到很多你想要拿到的信息:param start_response: 帮你封装响应信息的(响应行和响应头),注意下面的参数:return:'''start_response('200 OK', [('Content-Type', 'text/html'),('k1','v1')])# print(environ)print('>>>>>',environ['PATH_INFO'])  #输入地址127.0.0.1:8000,        这个打印的是'/',输入的是127.0.0.1:8000/index,打印结果是'/index'return [b'<h1>Hello, web!</h1>']#和咱们学的socketserver那个模块很像啊
httpd = make_server('127.0.0.1', 8080, application)print('Serving HTTP on port 8080...')
# 开始监听HTTP请求:
httpd.serve_forever()

 

转载于:https://www.cnblogs.com/sc-1067178406/p/10407850.html

django基础 -- 1. 前奏 web框架的本质相关推荐

  1. day 65 Django基础一之web框架的本质

    Django基础一之web框架的本质 django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Dja ...

  2. Django基础一之web框架的本质

    我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求, ...

  3. Python学习-基础篇14 Web框架本质及第一个Django实例

    Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 半成品自定义web框架 impor ...

  4. Django之web框架的本质

    web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应, ...

  5. Django/Flask/Tornado三大web框架性能分析

    写在前面: 本文的数据涉及到之前遇到过的问题,大概一次 http 请求到收到响应需要多少时间.这个问题在实际工作中与框架有比较大的关系,因此特别就框架的性能做了一次分析. 这里使用之前的一个报告数据: ...

  6. python web框架 多线程_Django基础知识 web框架的本质详解

    姑娘,你好,我是Jaden,请问约吗?嘻嘻~~ alert('这是我们第一个网页')

  7. python web flask开发框架_零基础入门python web框架Flask开发

    Flask框架是Python开发的一个基于Werkzeug和Jinja 2的web开发微框架,它的优势就是极其简洁,但又非常灵活,而且容易学习和应用.因此Flask框架是Python新手快速开始web ...

  8. Python自动化开发学习的第十一周----WEB框架--Django基础

    WEB框架的本质 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:utf-8imp ...

  9. django基础、自定义框架

    django基础 HTTP 超文本传输协议 是在应用层 如今广泛使用的是HTTP1.1 默认为80端口 5层协议: HTTP协议 应用层 TCP/UDP协议 运输层 IP 网络层 数据链路层 物理层 ...

最新文章

  1. DFTug - Getting Started(上篇)
  2. python 加载mat文件
  3. 海驾学车过程全揭秘——第九篇:科目三集训及考试
  4. 最简单的java单例
  5. c程序设计语言 hello,Hello, World!
  6. python数字转换成中文大写_python中如何将货币数字转化成汉字大写金额
  7. POJ - 3494
  8. 基于matlab的电池管理系统开发,基于MATLAB的锂电池组均衡仿真系统设计
  9. redis数据中的key如果是中文
  10. oracle创建用户密码和权限--ORA-65096 invalid common user or role name
  11. HTML的img插入本地图片
  12. windows10 freeswitch soundtouch 变声
  13. c语言编程基础心得,C语言编程学习心得体会
  14. JSSDK公众号微信分享功能
  15. 挑战用五行代码轻松集成登录系统,实现单点登录
  16. 365值得吗 office_对于一个大学生来说,Office365是否值得购买?
  17. 拆解博朗一款剃须刀,质量真心差。德吹可以休已
  18. 高数-极限-存在与连续1
  19. 主板2个M. 2接口,哪个m2插槽是与CPU直连?总结不得不说PCIE知识
  20. html中的xmlns是什么意思?

热门文章

  1. 011.练手.Ubuntu下录高清视频
  2. 手机安装Linux教程
  3. 2022年,大厂都在招什么样的Linux运维?
  4. 初中毕业计算机应用主要学什么,初中毕业能学计算机应用技术吗
  5. 微信小游戏开发实战教程11-使用本地缓存
  6. python 模块保存在哪_python模块存储在哪里?
  7. Tigase-Server 8.3.0在windows11下安装
  8. openlayers 移动地图中心点
  9. pytorch中根据神经网络结构确定输入图片尺寸(根据图片尺寸修改神经网络结构)
  10. 人体内菌群如何进化适应宿主内环境