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 相关文章推荐
pycharm远程调试openstack代码
Nov 21 Python
人生苦短我用python python如何快速入门?
Mar 12 Python
Python使用add_subplot与subplot画子图操作示例
Jun 01 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 Python
浅谈python新式类和旧式类区别
Apr 26 Python
python中树与树的表示知识点总结
Sep 14 Python
将数据集制作成VOC数据集格式的实例
Feb 17 Python
Python实现弹球小游戏
Aug 01 Python
Python调用jar包方法实现过程解析
Aug 11 Python
Python GUI库Tkiner使用方法代码示例
Nov 27 Python
python设置 matplotlib 正确显示中文的四种方式
May 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
风格模板初级不完全修改教程
2006/10/09 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
php利用事务处理转账问题
2015/04/22 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
Javascript 面向对象之重载
2010/05/04 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
ES6中module模块化开发实例浅析
2017/04/06 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
Vue常用的全选/反选的示例代码
2020/02/19 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
JavaScript实现点击切换功能
2021/01/27 Javascript
Python Sleep休眠函数使用简单实例
2015/02/02 Python
Python正规则表达式学习指南
2016/08/02 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
对Django外键关系的描述
2019/07/26 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
生产部主管岗位职责
2014/01/06 职场文书
大四学生思想汇报
2014/01/13 职场文书
集中整治工作方案
2014/05/01 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
吴仁宝观后感
2015/06/09 职场文书