1

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\r\n
Host: 127.0.0.1:8000\r\n
Connection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, br\r\n 
Accept-Language: zh-CN,zh;q=0.9\r\n
Cookie: __guid=96992031.196438983550187420.1534755060914.9175; csrftoken=TGzlOSkvWQLgnrVlVuobDQ0KxLDHxycZ0VPimfwZyRXGBLP7L7v9Uc93hdzlewyY; sessionid=vodmiblg1pkrql3cfqv7l8zxw9fkhrj3\r\n
\r\n'
 

 

  • 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\r\n\r\n")
    #想让浏览器在页面上显示出来的内容都是相应正文
    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\r\n\r\n")
    #想让浏览器在页面上显示出来的内容都是相应正文
    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接口模块.

 

posted @ 2018-11-11 11:44  萌哥-爱学习  阅读(187)  评论(0编辑  收藏  举报