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实现多线程下载文件的代码实例
Jun 01 Python
详解python的几种标准输出重定向方式
Aug 15 Python
python中利用xml.dom模块解析xml的方法教程
May 24 Python
Python numpy实现二维数组和一维数组拼接的方法
Jun 05 Python
Python 控制终端输出文字的实例
Jul 12 Python
cProfile Python性能分析工具使用详解
Jul 22 Python
利用python计算windows全盘文件md5值的脚本
Jul 27 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
Django 自定义权限管理系统详解(通过中间件认证)
Mar 11 Python
python deque模块简单使用代码实例
Mar 12 Python
Selenium alert 弹窗处理的示例代码
Aug 06 Python
如何解决python多种版本冲突问题
Oct 13 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 分页类 扩展代码
2009/06/11 PHP
供参考的 php 学习提高路线分享
2011/10/23 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
JS画5角星方法介绍
2013/09/17 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
Angular resolve基础用法详解
2018/10/03 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
Python判断字符串与大小写转换
2015/06/08 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
通过实例解析python描述符原理作用
2020/01/22 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
创建无烟单位实施方案
2014/03/29 职场文书
2014高中生入党思想汇报范文
2014/09/13 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
亮剑观后感
2015/06/05 职场文书
食堂管理制度范本
2015/08/04 职场文书
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android