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


猜你喜欢
- 生成一个2000*5的表格,每个单元格的内容是行号+逗号+列号 方法一:使用createElement生成表格,使用insertRow和in
- 一、yield关键字实现方式以yield关键字方式实现协程代码如下所示:def fun1(): yield 1 &
- pyecharts 是一个用于生成 Echarts 图表的类库。 Echarts 是百度开源的一个数据可视化 JS 库。主要用于数据可视化。
- 你还在找在小程序成如何将图片转base64存储起来并显示嘛,在这里呢,来瞧瞧。使用方法js文件let $this = this;reques
- 判断字符串s.isalnum() #所有字符都是数字或者字母s.isalpha() #所有字符都是字母s.isdigit() #所有字符都是
- 本文实例讲述了php实现的验证码文件类。分享给大家供大家参考。具体如下:<?php/*** @file* @version 1.0*
- 前面给大家分享了pandas.merge用法详解,这节分享pandas数据合并处理的姊妹篇,pandas.concat用法详解,参考利用Py
- 本文实例讲述了php验证session无效的解决方法。分享给大家供大家参考。具体方法如下:一、问题今天在配置 apache+php环境时折腾
- 【基本介绍】【格式】:pivot(聚合函数 for 需要转为列的字段名 in(需要转为列的字段值))【说明】:实现将指定字段的字段值转换为列
- 1、出现错误train_df = pd.read_csv( 'C:\Users\lenovo\Desktop\train.csv
- 1.创建带有缺失值的数据库:import pandas as pdimport numpy as npdf = pd.DataFrame(n
- 实现效果如下: 需求:由于后台搜索选项有很多,影响页面美观,所以一进来要隐藏一部分搜索项,只保留1行,点击【展开搜索】按钮的时候才
- 我们经常遇到各种字典套字典的数据,例如:nest_dict = { 'a': 1, 'b
- 在C++11和C#中都有匿名函数的存在。下面看看在python中匿名函数的使用。1.lambda只是一个表达式,函数体比def简单很多。2.
- 1、汇总统计介绍几个聚集函数有多少名学生SELECT COUNT(*) FROM student;SELECT COUNT(1) FROM
- 前言最近学习scrapy爬虫框架,在使用pycharm安装scrapy类库及创建scrapy项目时花费了好长的时间,遇到各种坑,根据网上的各
- 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。Socket的英文原义是"孔"
- 本周暂时比较清闲,可以保持每日一更的速度。国外身份证项目新增需求,检测出身份证正面的人脸。最开始考虑mobilenet-ssd,经同事提醒,
- 本文实例讲述了Python操作多维数组输出和矩阵运算。分享给大家供大家参考,具体如下:在许多编程语言中(Java,COBOL,BASIC),
- 学生信息系统提示:python编写的学生成绩管理系统,包括8个功能和打包教程一、功能界面 def menum():