HTTP协议、手撸web框架

一、软件开发架构

C/S架构:Client:客户端、Server:服务端

B/S架构: Browser: 浏览器端、 Server:服务端

ps: B/S本质也是C/S

二、HTTP协议

HTTP协议:超文本传输协议

四大特性

  1. 基于TCP/IP之上作用于应用层
  2. 基于请求响应
  3. 无状态 cookie session token...
  4. 无连接 长连接 websocket(HTTP协议的大补丁)

数据格式

1.请求格式

  • 请求首行(请求方式,协议版本)
  • 请求头(一大堆k:v键值对)
  • /r/n
  • 请求体(真正的数据 发post请求的时候才有 如果是get请求不会有)

2.响应格式

  • 响应首行
  • 响应头
  • /r/n
  • 响应体

响应状态码

用特定的数字表示一些意思:

  • 1XX:服务端已经成功接收到了你的数据,正在处理,你可以继续提交其他数据
  • 2XX:服务端成功响应(200请求成功)
  • 3XX:重定向(301, 302)
  • 4XX:请求错误(404请求资源不存在, 403 拒绝访问)
  • 5XX:服务器内部错误(500)

三、请求方式

get请求:向服务端要数据

post请求:向服务端提交数据(eg:用户登陆)

(url:统一资源定位符)

四、纯手撸web框架

1.纯手撸web框架:

  • 手动书写socket
  • 手动处理http格式数据

2.基于wsgiref模块:

  • 该模块实现了上面两个手动的过程
  • 根据功能不同拆分了不同的py文件
  • urls.py 只放路由与视图函数对应关系
  • view.py 放视图函数(函数,类)
  • 拆分完成之后 如果想要添加功能,你仅仅只需要在上面两个地方动手脚就可以了

3.动静态网页:

  • 静态网页:数据是前端写死的。
  • 动态网页:数据是实时获取的(eg:后端获取数据库中的数据展示到前端)。

4.jinja2模块实现模板的渲染。

五、Python三大主流web框架

1、Django:

  • 优点:大而全,自带的功能特别特别多,类似于航空母舰
  • 缺点:有时候过于笨重

2、Flask:

  • 优点:小而精,自带的功能特别特别少,类似于游骑兵,但是第三方的模块特别多
  • 缺点:过于依赖第三方模块

3、Tornado:

  • 异步非阻塞
  • 牛逼到可以开发游戏服务器
A:socket部分
B:路由与视图函数对应关系
C:模板语法

Django:
    A用的别人的(wsgiref),B和C都是自己写的
    
Flask:
    A用的别人的 werkzeug(基于wsgiref), C用的别人的(jinja2), B自己写的
    
Tornado:
    三个都是自己写的

六、Django目录简介

项目名
	跟项目名同名的文件夹
    	settings.py 暴露给用户的配置文件
    	urls.py 路由与视图函数对应关系
    应用名(app)
    	migrations文件夹 存放数据库迁移记录的
        admin.py Django后台管理
        apps.py 注册相关
        models.py 模型类
        tests.py 测试文件
        views.py 存放视图函数
    templates文件夹 存放html文件
    manage.py Django入口文件
posted @ 2019-10-18 20:01  17vv  阅读(511)  评论(0编辑  收藏  举报