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中time()方法的使用的教程
May 22 Python
Python 装饰器使用详解
Jul 29 Python
Python引用传值概念与用法实例小结
Oct 07 Python
python 文件查找及内容匹配方法
Oct 25 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
Feb 19 Python
python制作抖音代码舞
Apr 07 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
Python字符串中添加、插入特定字符的方法
Sep 10 Python
Python根据服务获取端口号的方法
Sep 25 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
python re的findall和finditer的区别详解
Nov 15 Python
Python爬虫自动化爬取b站实时弹幕实例方法
Jan 26 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
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
PHP实现下载功能的代码
2012/09/29 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
js判断变量是否未定义的代码
2020/03/28 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
python实现提取百度搜索结果的方法
2015/05/19 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
Python 导入文件过程图解
2019/10/15 Python
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
自荐信包含哪些内容
2013/10/30 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
好学生评语大全
2014/05/05 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
接收函
2019/04/22 职场文书
用python自动生成日历
2021/04/24 Python
vue router 动态路由清除方式
2022/05/25 Vue.js
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript