zoukankan      html  css  js  c++  java
  • Django基础

    https://www.cnblogs.com/liwenzhou/articles/8620663.html

    1.模拟Http请求通过socket

    import  socket
    
    #生成sokect实例
    sk =socket.socket()
    #绑定ip和端口
    sk.bind(("127.0.0.1",8000))
    #监听
    sk.listen()
    
    #写一个循环等待客户端的连接.
    while 1:
        #获取客户端的链接
        conn, _ =sk.accept()
        #接收客户端发来的消息
        data =conn.recv(8096)
        print(data)
        #给客户端回复消息
        conn.send(b"hello")
        #关闭
        conn.close()
        sk.close()
    

      

    2.浏览器中输入 ip之后,打印data 得到的结果.

    3. 分析数据

    b'GET / HTTP/1.1
    
    Host: 127.0.0.1:8000
    
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Accept-Encoding: gzip, deflate, br
     
    Accept-Language: zh-CN,zh;q=0.9
    
    Cookie: __guid=96992031.196438983550187420.1534755060914.9175; csrftoken=TGzlOSkvWQLgnrVlVuobDQ0KxLDHxycZ0VPimfwZyRXGBLP7L7v9Uc93hdzlewyY; sessionid=vodmiblg1pkrql3cfqv7l8zxw9fkhrj3
    
    
    '
     
    

     

    • request

      

    4. 给socket加上请求头之后 ,就能在浏览器上显示

    •  response

    import  socket
    
    #生成sokect实例
    sk =socket.socket()
    #绑定ip和端口
    sk.bind(("127.0.0.1",8000))
    #监听
    sk.listen()
    
    #写一个循环等待客户端的连接.
    while 1:
        #获取客户端的链接
        conn, _ =sk.accept()
        #接收客户端发来的消息
        data =conn.recv(8096)
        print(data)
        #给客户端回复消息
        conn.send(b"http/1.1 200 OK
    
    ")
        #想让浏览器在页面上显示出来的内容都是相应正文
        conn.send(b"hello")
        #关闭
        conn.close()
    sk.close()

    5.显示字节或者字符串格式显示 

     

    import  socket
    
    #生成sokect实例
    sk =socket.socket()
    #绑定ip和端口
    sk.bind(("127.0.0.1",8000))
    #监听
    sk.listen()
    
    #写一个循环等待客户端的连接.
    while 1:
        #获取客户端的链接
        conn, _ =sk.accept()
        #接收客户端发来的消息
        data =conn.recv(8096)
        print("bytes_formate:",data)
        data_str =str(data, encoding="utf-8") # 如果转换成bytes类型bytes("str",encoding="utf-8")
        print("str_formate:",data_str)
        #给客户端回复消息
        conn.send(b"http/1.1 200 OK
    
    ")
        #想让浏览器在页面上显示出来的内容都是相应正文
        conn.send(b"<h1>hello</h1>")
        #关闭
        conn.close()
    sk.close()
    

      

     

    6. 服务器程序和应用程序

     

    对于真实开发中的python web程序来说,一般会分为两部分:服务器程序和应用程序。

    服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理。

    应用程序则负责具体的逻辑处理。为了方便应用程序的开发,就出现了众多的Web框架,例如:Django、Flask、web.py 等。不同的框架有不同的开发方式,但是无论如何,开发出的应用程序都要和服务器程序配合,才能为用户提供服务。

    这样,服务器程序就需要为不同的框架提供不同的支持。这样混乱的局面无论对于服务器还是框架,都是不好的。对服务器来说,需要支持各种不同框架,对框架来说,只有支持它的服务器才能被开发出的应用使用。

    这时候,标准化就变得尤为重要。我们可以设立一个标准,只要服务器程序支持这个标准,框架也支持这个标准,那么他们就可以配合使用。一旦标准确定,双方各自实现。这样,服务器可以支持更多支持标准的框架,框架也可以使用更多支持标准的服务器。

    WSGI(Web Server Gateway Interface)就是一种规范,它定义了使用Python编写的web应用程序与web服务器程序之间的接口格式,实现web应用程序与web服务器程序间的解耦。

    常用的WSGI服务器有uwsgi、Gunicorn。而Python标准库提供的独立WSGI服务器叫wsgiref,Django开发环境用的就是这个模块来做服务器。

    wsgi 是一个协议 ,应用程序与服务器程序之间的接口,实现web与应用的解耦.

    wsgiref 是django环境下的wsgi接口模块.

  • 相关阅读:
    初识STM32标准库
    自己写库—构建库函数雏形
    使用寄存器点亮LED等
    新建工程---寄存器版
    什么是寄存器
    初识STM32
    ST-LINK驱动的安装
    MDK5使用技巧
    开发环境的搭建
    1行Python代码制作动态二维码
  • 原文地址:https://www.cnblogs.com/mengbin0546/p/9941657.html
Copyright © 2011-2022 走看看