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 相关文章推荐
gearman的安装启动及python API使用实例
Jul 08 Python
Python多线程编程(五):死锁的形成
Apr 05 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
python list排序的两种方法及实例讲解
Mar 20 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
python实现AES加密与解密
Mar 28 Python
基于Python中isfile函数和isdir函数使用详解
Nov 29 Python
python实现视频读取和转化图片
Dec 10 Python
详解opencv中画圆circle函数和椭圆ellipse函数
Dec 27 Python
怎么解决pycharm license Acti的方法
Oct 28 Python
基于PyInstaller各参数的含义说明
Mar 04 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 strip_tags保留多个HTML标签的方法
2016/05/22 PHP
简单实现php上传文件功能
2017/09/21 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
AngularJS中的过滤器使用详解
2015/06/16 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
python实现人人网登录示例分享
2014/01/19 Python
Python实现从URL地址提取文件名的方法
2015/05/15 Python
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
Python中property属性实例解析
2018/02/10 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
Python定义一个Actor任务
2020/07/29 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
红领巾广播站广播稿
2014/02/01 职场文书
企业办公室主任岗位职责
2014/02/19 职场文书
三爱活动实施方案
2014/03/19 职场文书
个人四风问题整改措施
2014/10/24 职场文书
如何用H5实现好玩的2048小游戏
2022/07/23 HTML / CSS