手撸WEB框架

手撸web框架

软件开发的架构

C/S架构: 客户端 / 服务端

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

bs的本质也是cs

HTTP协议

http是一种超文本传输协议

1.四大特性

  • 基于TCP/I P之上作用于应用层
  • 基于请求响应
  • 无状态 (cookie session token..)
  • 无连接 (长连接 websocket ( http 协议的大补丁))

2.数据格式

  • 请求格式
    • 请求首行(请求方式, 协议版本.)
    • 请求头(是一大堆k: v键值对) 注意请求头和请求体之间的空格\r\n
    • 请求体(真正的数据,发post请求的时候才有, 如果是get请求)
  • 响应格式
    • 响应首行
    • 响应头 注意响应头和响应体之间的空格
    • 响应体

3.响应状态码

    • 用特定的数字表示一些意思
    • 1 xx: 服务端已经成功接收到了你的数据,正在处理, 你可以继续提交其他数据
    • 2 xx:服务端成功响应(200请求成功)
    • 3 xx:重定向.(例如用户没有登录就让他跳转到登录网页)
    • 4 xx:请求错误(404请求资源不存在, 403拒绝访问)
    • 5 xx:服务器内部错误(500 比如服务器宕机了)

请求方式

get请求:

  • 朝别人要数据

post请求:

  • 向别人提交数据(比如: 用户的登录)

url :

  • 同一资源定位符

手撸web框架

基于wsgiref模块

  • urls.py: 路由与视图函数对象关系
  • views.py: 放的是视图函数(就是处理一些业务逻辑)
  • templates: 模板文件夹(就是一堆html文件)

HTTP协议

1.纯手撸web框架

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

2.基于wsgiref模块

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

3.动态与静态网页

  • 静态网页
    • 数据是写死的,是不变的
  • 动态网页
    • 数据是实时获取的
    • 例如:
      • 后端获取当前的时间展示到前端
      • 后端获取数据库中的数据展示到前端

python主流的三大web框架

Django

  1. 大而全 自带的功能有很多 类似于满级的账号
  2. 但有的时候会显得过去笨重, 毕竟东西太对了

Flask

  1. 小而精, 自带的功能特别少 类似于优秀小号
  2. 但是他的第三方模块特别多, 如果把它的第三方模块加起来的话完全可以超过Django
  3. 并且它比较依赖于带三方模块,一但模块崩了,它也就凉了,相当于有一帮大佬在带它

Tornado

  1. 异步非阻塞的特性, 它可以牛逼到开发游戏服务器.(支持高并发啊)

这三者的一个区别

A: socket部分

B:路由与视图函数对应关系

C:模板语法

Django:

  • A用的别人的 (比如:wsgiref)
  • B自己写的
  • C自己写的

Flask:

  • A用的别人的 werkzeug(基于wsgiref)
  • B自己写的
  • C用的别人的 jinja2

Tornado:

  • 牛逼三者都是自己写的

注意事项

  1. 计算机的名称不能是中文的
  2. 一个pycharm窗口就是一个项目
  3. 项目名里也尽量不要用中文

Django版本问题

  1. X 2. X 现在市面用的较多的还是1. X的(推荐使用1.11.9~1.11.13)

Djando安装

  • pip3 install django==1.11.11

验证你是否安装成功

  • 命令行直接敲Django-admin

简单介绍一个Django项目里的app

  1. 一个django项目就相当于一所大学,而app就类似于大学里面的学院.
  2. django其实就是用来写一个个应用的
  3. 一个app就相当于与一个独立的功能(比如你的用户功能,你的管理功能)
  4. django支持任意的多个app

如何来使用Django

命令行使用

  • 创建django项目: (django-admin startproject mysite)
  • 启动django项目:(python manage.py runserver)
  • 创建应用app:( python manage.py startapp app01)

注意事项

  1. 新创建的app需要你去settings配置文件中注册而pycharm只会帮你注册第一个你在创建项目的时候写的应用
  2. 使用命令行创建Django项目, 不会帮你创建templates文件夹,你只能自己创建
  3. 在settings文件中, 需要你手动在TEMPLATES里写配置(os.path.join(BASE, 'remplates'))
  4. 在你启动Django的时候,你一定要确保一个端口只有一个djiango项目

django项目里的对应

项目名

​ 和项目名同名的文件夹

​ settings.py 暴露给用户的配置文件

​ urls.py 路由与视图函数对应关系

应用名

​ migrations 文件夹 存放数据库迁移记录的

​ admin.py django后台管理

​ apps.py 注册相关

​ models.py 模型类

​ tests.py 测试文件

​ views.py 存放视图函数

​ templates 文件夹 存放html文件

​ manage.py django 入口文件

猜你喜欢

转载自www.cnblogs.com/kangwy/p/11718011.html