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 相关文章推荐
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
python实现ftp客户端示例分享
Feb 17 Python
用Python中的字典来处理索引统计的方法
May 05 Python
Python通过select实现异步IO的方法
Jun 04 Python
python 随机打乱 图片和对应的标签方法
Dec 14 Python
python2使用bs4爬取腾讯社招过程解析
Aug 14 Python
使用python脚本自动创建pip.ini配置文件代码实例
Sep 20 Python
python处理excel绘制雷达图
Oct 18 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 Python
python实现按日期归档文件
Jan 30 Python
python 中[0]*2与0*2的区别说明
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
怎样在PHP中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
JavaScript实现自定义媒体播放器方法介绍
2017/01/03 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
wxpython学习笔记(推荐查看)
2014/06/09 Python
python使用多线程不断刷新网页的方法
2015/03/31 Python
python操作kafka实践的示例代码
2019/06/19 Python
如何在Django项目中引入静态文件
2019/07/26 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
医师定期考核实施方案
2014/05/07 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
李白故里导游词
2015/02/12 职场文书
婚宴父亲致辞
2015/07/27 职场文书
学校教学管理制度
2015/08/06 职场文书
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python