浏览器请求动态页面的过程
客户端:浏览器
服务端:web服务器(自己开发)+ 应用程序框架(已开发好的半成品,可以把应用程序框架看作web服务器的一部分,作用是帮我们解决web服务器开发的难度。)web服务器调用应用程序框架。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/aa1bcc8e2f66478f2d9c251631f44d4d.png)
UWSGI
WSGI不是服务器,不是API,不是Python模块,更不是什么框架,而是一种服务器和客户端交互的接口规范!
在WSGI规范下,web组件被分成三类:client, server, and middleware.
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f6d42f6e86cfcb066c2ba420e7e3975c.png)
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return ‘Hellow Word!’
上面的application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:
1. environ:一个包含所有HTTP请求信息的dict对象;
2. start_response:一个发送HTTP响应的函数。
小结
- 无论多么复杂的Web应用程序,入口都是一个WSGI处理函数。
- HTTP请求的所有输入信息都可以通过environ获得,HTTP响应的输出都可以通过start_response()加上函数返回值作为Body。
Web应用的本质
- 浏览器发送一个HTTP请求;
- 服务器收到请求,生成一个HTML文档;
- 服务器把HTML文档作为HTTP响应的Body发送给浏览器;
- 浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。