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


Posted in Python onMarch 20, 2018

在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 相关文章推荐
Python的Django应用程序解决AJAX跨域访问问题的方法
May 31 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
python bmp转换为jpg 并删除原图的方法
Oct 25 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
django的csrf实现过程详解
Jul 26 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
Dec 30 Python
Python Des加密解密如何实现软件注册码机器码
Jan 08 Python
python函数enumerate,operator和Counter使用技巧实例小结
Feb 22 Python
Python绘制动态水球图过程详解
Jun 03 Python
pytorch判断是否cuda 判断变量类型方式
Jun 23 Python
python 模拟登陆163邮箱
Dec 15 Python
python如何修改装饰器中参数
Mar 20 #Python
python MySQLdb使用教程详解
Mar 20 #Python
django中的HTML控件及参数传递方法
Mar 20 #Python
安装python时MySQLdb报错的问题描述及解决方法
Mar 20 #Python
python如何定义带参数的装饰器
Mar 20 #Python
Python回文字符串及回文数字判定功能示例
Mar 20 #Python
python如何把嵌套列表转变成普通列表
Mar 20 #Python
You might like
PHP 函数语法介绍一
2009/06/14 PHP
Codeigniter发送邮件的方法
2015/03/19 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
2011/09/02 Javascript
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
jQuery基于ajax操作json数据简单示例
2017/01/05 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
python字符串替换示例
2014/04/24 Python
python生成日历实例解析
2014/08/21 Python
python购物车程序简单代码
2018/04/18 Python
浅析python继承与多重继承
2018/09/13 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
使用Python实现音频双通道分离
2020/12/25 Python
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
运动会解说词200字
2014/02/06 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
电教室标语
2014/06/20 职场文书
车间核算员岗位职责
2014/07/01 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
2014年招商引资工作总结
2014/11/22 职场文书