python web基础之加载静态文件实例
作者:lowphper 发布时间:2023-04-22 10:09:49
标签:python,静态,文件,加载
在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
然后就是同样的套路,读取,然后返回。
这样,一个把静态文件放在指定位置,并读取,就完成了
来源:http://blog.csdn.net/qq_37561761/article/details/79322067
0
投稿
猜你喜欢
- ndarray.ndim:维度ndarray.shape:形状ndarray.size:元素个数ndarray.dtype:元素数据类型nd
- http://swik.net/Ajax/Ajax+Mistakes在某网站瞎逛时,发现这个链接,进去逛了逛,觉得很有意思,大家也可以去看看
- 在asp.net 2.0中,很多情况下,使用gridview控件的话,甚至只需要拖拉控件,设置属性就可
- 在PHP中,我们不能用const直接定义数组常量,但是const可以定义字符串常量,结合eval()函数使字符串常量能执行。所以,我们可以用
- 有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表。比较好的方法是使用GRANT语句,因为他们是更简明并且好像错
- 两年前,我们开发了一套基于Flash的文件(主要是图片)上传RIA应用,提供给阿里巴巴的用户使用。如果你使用过Wordpress或flick
- 这句话后面的1200是什么单位来的啊?delete from online where datediff(""s&quo
- 一个不错的二级联动下拉菜单源码,您一定会用得到的。运行代码:<html><head><title>Lis
- 游标的使用提到游标这个词,人们想到的是在屏幕上一个闪动的方框,用以指示用户将要输入字符的位置。而在关系型数据库的SQL语言中,游标却有另外的
- 当系统出现故障时,只要存在数据日志那么就可以利用它来恢复数据解决数据库故障。作为SQL Server数据库管理员,了解数据日志文件的作用,以
- 根据 Dotzler 的统计,IE6 的份额正在缩水,这可能是 2009 年本人听到的第一个好消息。于此同时,Gmail 的浏览器支持列表中
- © 版权符号显示不清楚,就是那个圈C,在某些网站上就是显示太小,看不清楚。一开始还以为是字体大小的原因,调大以后,还是一样
- 如何用HtmlEncode来显示Unicode? 见下:<%@ Language=VBS
- 至于对好广告的评判,不同的人有不同的标准,一些人认为那些打动人、有新意、有共鸣的广告是好广告,另一些人的观点则是:观众喜欢与否,不是广告好与
- 事务处理的流程示例 database := db.DB tx, err := datab
- 作为WIMP(Window/Icon/Menu/Pointing Device)界面设计的关键部分,图标在人机交互设计中无所不在。随着人们对
- 是否看见大站的广告都是放在内容中间实现文字环绕的呢,一般普通小站广告只能放在内容开头或者结尾,也许大站的cms系统带这个功能吧,我们小站常用
- PHP ini_set用来设置php.ini的值,在函数执行的时候生效,脚本结束后,设置失效。无需打开php.ini文件,就能修改配置,对于
- 一:创建迁移在laravel中使用make:migration命令来创建迁移php artisan make:migration creat
- 一、软件准备:以下均为截止2005-4-20的最新正式版本PHP(5.1.2):http://www.php.netMySQL(5.0.19