zoukankan      html  css  js  c++  java
  • 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入口文件
    
  • 相关阅读:
    [leetcode-788-Rotated Digits]
    [leetcode-783-Minimum Distance Between BST Nodes]
    [leetcode-775-Global and Local Inversions]
    [leetcode-779-K-th Symbol in Grammar]
    对于网站,APP开发流程的理解
    进程与线程的一个简单解释【摘】
    快速入手Web幻灯片制作
    Spring MVC Hibernate MySQL Integration(集成) CRUD Example Tutorial【摘】
    linux下SVN服务器配置
    Mac OS X 下android环境搭建
  • 原文地址:https://www.cnblogs.com/17vv/p/11700412.html
Copyright © 2011-2022 走看看