web的框架和解析请求的Request类我们都写好了,现在唯一要做的就是处理相应。编写一个route_dict字典,key是url路径,value是对应这个url的相应函数,并使用response_for_request作为唯一的接口接受请求,并从route_dict获取对应的函数,如下:
当请求'/'时,response_for_request根据request解析到'/'这个path,然后从route_dict得到route_index这个函数,最后返回route_index(request)的结果。route_index需要按照http响应的格式返回字节数据,例如:
与请求的格式类似,第一行HTTP/1.1 200 OK分别表示协议、状态码和状态,Content-Type: text/html是header中的key: value形式的内容,这里只有一行,常见的还有Set-Cookie、Content-Length等;然后是空行;最后就是html页面的内容。假设以上内容都以str的形式放在response变量中,那么route_index可以写成:
此时运行runserver,在浏览器输入url,就可以看到内容Index Page。
回复响应的原理就是这样,后续每增加一个路径,就在字典中增加一条item及增加一个对应的响应函数。当用户请求的路径不在route_dict中时,就返回error_handle这个函数,我们只要让它返回类似404 NOT FOUND之类的内容就可以了。