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 相关文章推荐
Python3字符串学习教程
Aug 20 Python
Python如何判断数独是否合法
Sep 08 Python
详细分析python3的reduce函数
Dec 05 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
python 3调用百度OCR API实现剪贴板文字识别
Sep 04 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
Django框架基础模板标签与filter使用方法详解
Jul 23 Python
在keras中实现查看其训练loss值
Jun 16 Python
Python 如何展开嵌套的序列
Aug 01 Python
Python切片列表字符串如何实现切换
Aug 06 Python
PyTorch 导数应用的使用教程
Aug 31 Python
python 详解turtle画爱心代码
Feb 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实现查询百度google收录情况(示例代码)
2013/08/02 PHP
使用Discuz关键词服务器实现PHP中文分词
2014/03/11 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
JavaScript 页面编码与浏览器类型判断代码
2010/06/03 Javascript
javascript天然的迭代器
2010/10/29 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
在Python中append以及extend返回None的例子
2019/07/20 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
大四毕业生学习总结的自我评价
2013/10/31 职场文书
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
网上蛋糕店创业计划书
2014/01/24 职场文书
美术教师个人总结
2015/02/06 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
学习委员竞选稿
2015/11/20 职场文书
新学期家长寄语2016
2015/12/03 职场文书
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python