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利用pyHook实现监听用户鼠标与键盘事件
Aug 21 Python
Python中urllib2模块的8个使用细节分享
Jan 01 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
Jun 07 Python
python处理按钮消息的实例详解
Jul 11 Python
python中对数据进行各种排序的方法
Jul 02 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 Python
python 统计文件中的字符串数目示例
Dec 24 Python
python模拟点击网页按钮实现方法
Feb 25 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
python脚本和网页有何区别
Jul 02 Python
python之语音识别speech模块
Sep 09 Python
Python 中的 copy()和deepcopy()
Nov 07 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中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
JavaScript使用prototype定义对象类型(转)[
2006/12/22 Javascript
用javascript实现页面打印的三种方法
2007/03/05 Javascript
js同时按下两个方向键
2007/12/01 Javascript
JS Array对象入门分析
2008/10/30 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
nodejs实现遍历文件夹并统计文件大小
2015/05/28 NodeJs
浅谈Javascript数组索引
2015/07/29 Javascript
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
2017/08/28 jQuery
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
JavaScript实现刮刮乐效果
2020/11/01 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
pandas 空数据处理方法详解
2019/11/02 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
测控技术自荐信
2014/06/05 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
质检员岗位职责
2015/02/03 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
现实表现证明材料
2015/06/19 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python