zoukankan      html  css  js  c++  java
  • 手撸WEB框架

    手撸web框架

    软件开发的架构

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

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

    bs的本质也是cs

    HTTP协议

    http是一种超文本传输协议

    1.四大特性

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

    2.数据格式

    • 请求格式
      • 请求首行(请求方式, 协议版本.)
      • 请求头(是一大堆k: v键值对) 注意请求头和请求体之间的空格
      • 请求体(真正的数据,发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 入口文件

  • 相关阅读:
    联想 Vibe Shot(Z90-3) 免recovery 获取ROOT权限 救砖 VIBEUI V3.1_1625
    联想 Z5S(L78071)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 10.5.370
    联想 Z5(L78011) 免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 10.5.254
    联想 S5 Pro(L78041)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 5.0.123
    第二阶段 冲刺八
    第二阶段 冲刺七
    第二阶段 冲刺六
    第二阶段 冲刺五
    代码大全阅读笔记03
    学习进度十二
  • 原文地址:https://www.cnblogs.com/kangwy/p/11718011.html
Copyright © 2011-2022 走看看