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操作MongoDB基础知识
Nov 01 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
python判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
Python常见数据类型转换操作示例
May 08 Python
Python实现的文轩网爬虫完整示例
May 16 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 Python
PIL图像处理模块paste方法简单使用详解
Jul 17 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
Sep 05 Python
简单介绍django提供的加密算法
Dec 18 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
Feb 26 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
用Python监控你的朋友都在浏览哪些网站?
May 27 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
Python版中国省市经纬度
2020/02/11 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
初婚未育证明样本
2014/10/24 职场文书
骨干教师申报材料
2014/12/17 职场文书
2015年工程师工作总结
2015/04/30 职场文书
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python