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 入口文件

  • 相关阅读:
    vue之过滤器的用法
    数组方法
    vue指令之 v-fo循环和 v-show 以及key值的用法
    清除浮动的几种方式
    cookie和session的区别
    layui添加新增弹出框
    layui如何实现图片上传功能
    css中设置背景图片平铺整个页面
    在vue中使用样式的方法
    windows最小最大化当前窗口和关闭当前窗口
  • 原文地址:https://www.cnblogs.com/kangwy/p/11718011.html
Copyright © 2011-2022 走看看