zoukankan      html  css  js  c++  java
  • Django基础——Web框架原理

    所有的web应用的本质就是一个socket服务端,而浏览器就是一个socket客户端;

    以前我们自己在电脑上写的socket服务端和客户端的通信,我们知道客户端会向服务端发来什么格式的消息,然后我们用服务端去用相应的格式给接收它,其实两者之间,是靠自己定的一个通信的协议。

    而现在客户端是用户的浏览器了,因此还想使浏览器的客户端与服务端进行通信,就必须要遵循HTTP协议了(本质上就是接收消息的格式要求)HTTP协议中现今广泛使用的一个版本——HTTP 1.1。

    有关于HTTP协议:

      1.浏览器往服务端发的叫做 请求(request);

      请求消息的格式:

      请求方法 路径 HTTP/1.1
      k1:v1
      k2:v2
      
      请求数据

    HTTP请求方法通常有两种;一是GET请求;二是PSOT请求;

      GET请求:通常是请求服务端返回一个页面(读取数据);

      PSOT请求:通常是表单提交数据

    2.服务端往浏览器发的叫 响应(response);

      响应的格式:

      HTTP/1.1 状态码 状态描述符
      k1:v1
      k2:v2
      
      响应正文 <-- html的内容

    HTTP的状态码

    状态代码的第一个数字代表当前响应的类型:

    • 1xx消息——请求已被服务器接收,继续处理
    • 2xx成功——请求已成功被服务器接收、理解、并接受
    • 3xx重定向——需要后续操作才能完成这一请求
    • 4xx请求错误——请求含有词法错误或者无法被执行
    • 5xx服务器错误——服务器在处理某个正确请求时发生错误

      例如"200 OK","404 Not Found"


    动态的网页:
      本质上都是字符串的替换
    字符串替换发生在什么地方:
      在服务端替换完再返回给浏览器!!!

    一个完整得请求流程:

      1.首先启动服务端,等待客户端(用户的浏览器)来连接;

      2.在浏览器的地址栏键输入URL,按下回车键后就与服务端建立了连接,浏览器就向服务端发送了请求;

      3.服务端接收到请求消息后,按照HTTP协议来解析消息;根据路径和函数的对应关系,找到将要执行的函数;

      4.执行函数,打开HTML文件,进行字符串的替换,得到一个最终要返回的HTML的内容;

      5.按照HTTP协议的消息格式要求,把HTML内容回复给用户的浏览器(这一动作就是发送响应);

      6.浏览器收到响应的消息之后,就会按照HTML的规则来渲染页面,把最终的页面呈现个用户的浏览器上;

        

    总结:  

    1. web框架的本质:
      socket服务端 与 浏览器的通信
    2. socket服务端功能划分:
      a. 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn...
      b. 根据用户访问不同的路径执行不同的函数
      c. 从HTML读取出内容,并且完成字符串的替换 --> jinja2(模板语言)

    3. Python中 Web框架的分类:
    1. 按上面三个功能划分:
      1. 框架自带a,b,c --> Tornado
      2. 框架自带b和c,使用第三方的a --> Django
      3. 框架自带b,使用第三方的a和c --> Flask
    2. 按另一个维度来划分:
      1. Django --> 大而全(你做一个网站能用到的它都有)
      2. 其他 --> Flask 轻量级

  • 相关阅读:
    第二章 万变不离其踪--收割自己的深度图
    2.1 光照系统
    2.2 深度渲染机制
    2.3 来点实际--日照分析实现
    2.4 通视分析
    2.5 Cesium视域分析的实现
    2.6
    第三章 讲真,没几个搞得清楚的经纬度——GIS坐标
    3.1 地理坐标系统
    3.2 渲染坐标系统
  • 原文地址:https://www.cnblogs.com/zenghui-python/p/10800165.html
Copyright © 2011-2022 走看看