一.Http知识:
    1.基于socket
        浏览器(格式一)
        web服务器(格式一)
        MYSQL客户端(格式二)
        MYSQL服务端(格式三)
       
        本质:
           socket=socket.socket
           socket.connect((ip,端口))
           socket.sendall(b'scasa41sa4sd')
    2.浏览器发送GET请求数据格式
           socket=socket.socket
           socket.connect((ip,端口))
           socket.sendall(b'GET/index/?name=xxx&age=21 http1.1\r\nAccept:text/html\r\nAccept-Encoding:gzip'
           deflate\r\nCookie:UM_distinctid=15d274\r\n\r\n')    
           request.GET.get('name')
    3.浏览器发送POST请求数据格式:
            socket = socket.socket()
            socket.connect((ip,端口))
            socket.sendall(b'POST /index/?name=xxx&age=11 http1.1\r\nAccept:text/html\r\nAccept-Encoding:gzip, deflate\r\nCookie:UM_distinctid=15d274\r\n\r\na1=123&a2=666&a3=xx')
            
            Django加工POST请求的数据,
            判断用户是否传递的是Django可以向request.POST中解析的数据?读取请求头Content-Type: application/x-www-form-urlencoded,那么就去解析request.body中的值,放置到request.POST中
                                      a1=123&a2=666&a3=xx
                                      request.POST.get('name')
                                      request.body   b"a1=123&a2=666&a3=xx"
                                      
            Django加工POST请求的数据:{a1:123,a2:567}
                                      request.POST   空
                                      request.body   b"{a1:123,a2:567}"                                     
    4.Http协议
            - 请求头和请求体分割:\r\n\r\n
            - 请求体之间:\r\n
            - GET无请求体
            - 无状态,短连接:socket请求响应断开
            - 请求头代表的意义
                - user-agent:来源
                - referer: 防盗链
                - content-type:请求体是什么格式?   

二、Django的生命周期
    1.wsgiref:
            函数版本:
                from wsgiref.simple_server import make_server
                def run_server(environ, start_response):
                    start_response('200 OK', [('Content-Type', 'text/html')])
                    return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]
                
                
                if __name__ == '__main__':
                    httpd = make_server('127.0.0.1', 8000, run_server) # 请求一旦到来:run_server(..)
                    httpd.serve_forever()
                
        
            类版本:
                from wsgiref.simple_server import make_server
                
                class WsgiHandler(object):
                
                    def __call__(self,environ, start_response):
                        start_response('200 OK', [('Content-Type', 'text/html')])
                        return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]
                
                
                if __name__ == '__main__':
                    obj =WsgiHandler()
                    httpd = make_server('127.0.0.1', 8000, obj) # 请求一旦到来:obj(..)
                    httpd.serve_forever()
                
                # 类()   -> __init__
                # 类()() -> __call__
            
        生命周期:
            ---wsgi,中间件,路由,视图(数据,模板)

       uwsgi,wsgi什么区别?
            wsgi, web服务网关接口,协议
            uwsgi实现协议
            wsgiref实现协议

      视图:
            接收请求
            返回内容
           
        注意:
            渲染工作在Django中执行完成后,字符串返回给浏览器。
            但是:js,css额外再发一次请求仅获取静态文件

Http协议与生命周期的更多相关文章

  1. Asp.net生命周期与Http协议

    Http协议,底层的东西还是不是特别熟悉,感觉要经过沉淀之后才能理解这些东西吧 1.Asp.net生命周期 Asp.net生命周期: 从发起请求开始,到IIS进行处理的全部过程,然后再到获取结果 当请 ...

  2. Git使用总结 Asp.net生命周期与Http协议 托管代码与非托管代码的区别 通过IEnumerable接口遍历数据 依赖注入与控制反转 C#多线程——优先级 AutoFac容器初步 C#特性详解 C#特性详解 WPF 可触摸移动的ScrollViewer控件 .NET(C#)能开发出什么样的APP?盘点那些通过Smobiler开发的移动应用

    一,原理 首先,我们要明白Git是什么,它是一个管理工具或软件,用来管理什么的呢?当然是在软件开发过程中管理软件或者文件的不同版本的工具,一些作家也可以用这个管理自己创作的文本文件,由Linus开发的 ...

  3. HTTP协议 Servlet入门 Servlet工作原理和生命周期 Servlet细节 ServletConfig对象

    1 HTTP协议特点   1)客户端->服务端(请求request)有三部份     a)请求行--请求行用于描述客户端的请求方式.请求的资源名称,以及使用的HTTP协议版本号 请求行中的GET ...

  4. Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

    什么是Serlvet? Servlet其实就是一个遵循Servlet开发的java类.Serlvet是由服务器调用的,运行在服务器端. 为什么要用到Serlvet? 我们编写java程序想要在网上实现 ...

  5. http协议,servlet的生命周期

    1.http协议(http协议是无状态的) http协议是指计算机通信网络中两台计算机进行通信必须共同遵守的规定或规则,它允许将超文本标记语言(html)文档从web服务器传送到客户端的浏览器(目前我 ...

  6. ARP协议详解之ARP动态与静态条目的生命周期

    ARP协议详解之ARP动态与静态条目的生命周期 ARP动态条目的生命周期 动态条目随时间推移自动添加和删除. q  每个动态ARP缓存条目默认的生命周期是两分钟.当超过两分钟,该条目会被删掉.所以,生 ...

  7. ARP协议具体解释之ARP动态与静态条目的生命周期

    ARP协议详细解释之ARP动态与静态条目的生命周期 ARP动态条目的生命周期 动态条目随时间推移自己主动加入和删除. q  每一个动态ARP缓存条目默认的生命周期是两分钟.当超过两分钟,该条目会被删掉 ...

  8. Android基础相关面试问题-activity面试问题(生命周期,任务栈,启动模式,跳转协议,启动流程)

    关于Android的一些面试题在15年就已经开了这个专栏了,但是一直木有坚持收集,而每次面对想要跳槽时大脑一片空白,也有些恐惧,因为毕境面试都是纯技术的沟通,要想让公司对你的技术能有所认可会全方位的进 ...

  9. PHP扩展-生命周期和内存管理

    1. PHP源码结构 PHP的内核子系统有两个,ZE(Zend Engine)和PHP Core.ZE负责将PHP脚本解析成机器码(也成为token符)后,在进程空间执行这些机器码:ZE还负责内存管理 ...

随机推荐

  1. 【BZOJ3687】简单题 背包+bitset

    [BZOJ3687]简单题 Description 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和.2.子集的异或和的异或和.3.子集的算术和的算术和.4.子集的算术和的 ...

  2. JS中的this变量的使用介绍

    在JavaScript中this变量是一个令人难以摸清的关键字,this可谓是非常强大,在本文将为大家详细介绍下JavaScript中this的使用,感兴趣的朋友可以参考下. JavaScript中t ...

  3. JavaScript深入理解sort()方法

    一. 基本用法 let arr1 = [3, 5, 7, 1, 8, 7, 10, 20, 19] console.log(arr1.sort()) // [1, 10, 19, 20, 3, 5, ...

  4. Vue中非父子组件传值的问题

    父子组件传值的问题,前面已经讲过,不再叙述,这里来说一种非父子组件的传值. vue官网指出,可以使用一个空vue实例作为事件中央线! 也就是说 非父子组件之间的通信,必须要有公共的实例(可以是空的), ...

  5. App的开发过程

    不同的项目管理模式或许会有完全不同的流程步骤.但是专业性几乎是保证产品质量的唯一准则. App的开发过程主要分为以下阶段,本文会按顺序为大家简单地说明: 1.需求梳理.分析 2.产品原型图绘制 3.U ...

  6. C# 函数2

    //读写INI     public class GF_INI     {         [DllImport("kernel32")]         private stat ...

  7. 微信公众号的搭建-第四天(2)-获取并缓存access_token

    1. 什么是access_token? 为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台 开放了许多接口,包括自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等 ...

  8. 2.3 使用ARDUINO控制MC20进行GPRS的TCP通讯

    需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...

  9. 剑指offer 面试13题

    面试13题: 题目:机器人的运动范围 题:地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子 ...

  10. php 计算器的例子

    php实现的计算器的例子,代码如下: <html>     <head>         <title>PHP实现简单计算器-www.jbxue.com</t ...