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中的struct模块
Apr 28 Python
八大排序算法的Python实现
Jan 28 Python
python dict.get()和dict['key']的区别详解
Jun 30 Python
Python 记录日志的灵活性和可配置性介绍
Feb 27 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 Python
python jenkins 打包构建代码的示例代码
Nov 29 Python
pycharm如何实现跨目录调用文件
Feb 28 Python
python制作抽奖程序代码详解
Jan 15 Python
Python实现简单的猜单词
Jun 15 Python
深入理解pytorch库的dockerfile
Jun 10 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
ThinkPHP的Widget扩展实例
2014/06/19 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
python爬取哈尔滨天气信息
2018/07/14 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
PyTorch搭建多项式回归模型(三)
2019/05/22 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
中国最大隐形眼镜网上商城:视客眼镜网
2016/10/30 全球购物
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
个人对照检查材料
2014/02/12 职场文书
送餐员岗位职责范本
2014/02/21 职场文书
赡养老人协议书
2014/04/21 职场文书
艾滋病宣传标语
2014/06/25 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
房产协议书范本
2014/10/18 职场文书
ES6 解构赋值的原理及运用
2021/05/25 Javascript
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript