赞
踩
1
请求一个网页的步骤:
1. 向浏览器发送一个请求;
2. 服务器收到请求,查询对应的资源(也可能是动态生成),这里的资源通常就是一个HTML文档;
3. 服务器生成HTTP报文,前面的HTML文档就是报文的body部分;
4. 服务器把HTTP响应发送给浏览器;
5. 最后浏览器接收到HTTP响应,把HTTP的Body解析出来并展示在浏览器上。
2
对于前端开发人员来说,我们每天做的事情就是准备一个HTML文档,而对于整个用户访问流程来说,剩下的工作都由服务器组件来完成,常用的Web服务器有:Apache、Nginx、IIS等。
为了保证不同的服务器都能够正常完成整个网页访问过程,它们需要遵循一个统一的接口,这个接口就是WSGI(Web Server Gateway Interface):通用网关接口。
Django就是基于WSGI开发的Web框架。
WSGI接口要求应用程序必须提供一个函数,这个函数可以处理HTTP响应。
我们先来看看Python的simple_server.py模块:
3
我们可以使用simple_server的make_server方法快速创建一个WSGI服务器,make_server的前3个参数需要我们给出来,分别是host:主机名,port:端口号, app:应用程序,host和port都很好理解,那么app是什么呢?其实app就是就是一个支持WSGI接口的函数,例如Django框架。这个函数包含两个参数,如:
4
看到这里你可能会说,我在写Django代码的时候并没有创建一个这样的函数啊?其实这正是框架的作用,Django已经为我们完成了这个步骤,如果你创建过Django应用,那么一定知道wsgi.py文件,在这里有一行代码:application = get_wsgi_application(),点击进去可以看到application就是一个WSGIHandler对象实例。
5
我们继续打开WSGIHandler,这时可以看到WSGIHandler实现了__call__方法,也就是说WSGIHandler可以像方法一样被调用,而这个方法就需要提供两个参数:environ, start_response。
6
我们再回到simple_server模块,在这里simple_server为我们提供了一个app的简单示例:
7
environ就是HTTP请求的全部header信息。
start_response方法接收两个参数:HTTP请求状态码;Header列表。
demo_app的返回值是一个包含HTML响应内容的列表。
了解以上信息之后,我们就可以开发一个自己的Web框架了:
首先要有自己的路由器:
8
开发自己的demo_app:
9
Web服务的启动代码:
10
执行程序之后,我们就可以再浏览器中访问了:http://localhost:9000/home/
最后总结一下,Web开发框架其实就是对demo_app方法的扩展。
END
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。