python

超轻量级php框架startmvc

python web基础之加载静态文件实例

更新时间:2020-05-25 02:12:01 作者:startmvc
在web运行中很重要的一个功能就是加载静态文件,在django中可能已经给我们设置好了,我们

在web运行中很重要的一个功能就是加载静态文件,在django中可能已经给我们设置好了,我们只要直接把模板文件

放在templates就好了,但是你知道在基础中,像图片是怎么加载以及找到相应位置的吗?

下面我们来看看。

在上篇文章中我把,静态文件的路径单独出来在这里说说了,正好说说全局变量request的作用。

首先,我们写前端图片的路径:


<img src="/static?file=1.gif"/> 

看到这里,可能已经有人看出来了,对的,我们把图片路径看成url路径和参数。

这里要说下,当浏览器看到img标签,它会给服务器发请求,所以路径相当于:


127.0.0.1/static?file=1.gif

懂了吧,实际上就是请求的路径是static,参数是file = 1.gif

然后这里我们有个函数parse_path(),


def parsed_path(path): 
 """ 
 /ss?message=hello world&author=fei 
 返回如下字典形式 
 { 
 'message': 'hello world', 
 'author': 'fei', 
 } 
 """ 
 index = path.find('?') 
 if index == -1: 
 return path, {} 
 else: 
 path, query_string = path.split('?', 1) 
 args = query_string.split('&') 
 query = {} 
 for arg in args: 
 k, v = arg.split('=') 
 query[k] = v 
 return path, query 

把路径传进去,就会把file和1.gif传进request里,如下


{ 
 'file' = '1.gif', 
} 

这样,我们就把参数化为字典形式,然后


r = { 
 '/static': route_static, 
 } 

当请求的路径为static是就会转向route_static函数,这个函数写在路由里,所以我们需要引入一下


response = r.get(path, error) 

return response(request) 

这样,显示图片就会转向route_static函数。

我们看下这个函数:


def route_static(request): 
 """ 
 静态资源的处理函数, 读取图片并生成响应返回 
 """ 
 filename = request.query.get('file', '1.gif') 
 path = 'static/' + filename 
 with open(path, 'rb') as f: 
 header = b'HTTP/1.1 200 OK\r\nContent-Type: image/gif\r\n\r\n' 
 img = header + f.read() 
 return img 

我们看下,下面这句话


filename = request.query.get('file', 'ceshi.gif') 

这样filename就会去request的query里找file键,如果有就返回,如果没有就返回ceshi.gif

然后就是同样的套路,读取,然后返回。

这样,一个把静态文件放在指定位置,并读取,就完成了

以上这篇python web基础之加载静态文件实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python 静态文件