静态文件处理
一、静态文件处理
通常页面中需要包含很多的静态文件,比如图片、音乐、视频等,才能使页面表现的更生动。
另外,页面中引用的外部CSS、JS文件也需要作为静态文件在页面中使用。
这些都需要Flask与Jinja2模版引擎提供支持。
默认设置下,Flask 在程序根目录中的static子目录中寻找静态文件。
常见的static目录结构如下所示:
只显示用户名
增加:查看用户信息
定义新的info.html 写到templates文件夹里面
加入头像
创建static文件夹
创建img等
放头像到img
改名字
可以去掉扩展名,一样可以显示头像
这样用户名和头像名一一对应比较好处理
info.html
img标签
static文件夹里面的图片要怎么添加到src里面呢?
设置头像大小。只调整宽度就好,等比例缩放。
如果用户没有图像,他这个里面会默认是一个碎图
效果:
flask底层的配置是可以修改的,在app.py里面加上config可以实现。为了调整迁移,可以动态产生链接
根据flask的配置找静态文件的图片
找static功能的文件夹,用url_for()函数
代码:注意是+name
效果:
设置样式
创建js文件
怎么引进来呢
总结:写static的路径的时候,最好不要写死,不方便迁移和改配置。
二、文件上传
原来的modify
input标签的type
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2v5TVHOJ-1576636543477)(img/
checkbox复选框
file文件
color颜色选择框
datetime时间选择器
email需要格式检查 要加js不方便 一般用text
password会把输入的变成小圆点
上传文件file
不是文件名是对象名,
一种虚拟对象avator
form里面要多一个enctype针对你上传的东西的一个格式
之前上传的是文本没关系
但是我们要上传文件的话,类型不一样了,各种各样的
多种样式的表单数据
所以,要上传文件的时候,一定要在form里面多一个enctype
要加一个文件的取出
在form里面,form本身是一个字典
查看一下form的keys
遍历form里面 的info
结果没有,我们已经上传了,但是没有到form里面来
原因 她不在form里面,他在files里面,s表示可以上传多个文件
avatar
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oov7Kl6l-1576636543480)(img/
文件拿到了,还没有处理它,怎么保存到我们自己的服务器
先提取对象
保存对象
它自己有save保存函数哦
看看他会自己存到哪儿去
不行
save需要文件名
按照name保存
按照原来文件自己的名字保存:
保存路径
它自动保存到了app.py一样的路径,我们设置它保存的位置到upload
在static下创建upload
怎么设置路径呢?
来一个os模块 关于路径的
项目文件夹的绝对路径
abspath绝对路径
dirname文件夹!!!名字
查一下当前文件的所处路径
这个__name___的意思就是当前文件
去掉后面的app.py,我们要前面的
打印看一下项目绝对路径
确定上传的文件夹路径
专门有一个join函数,不要自己去拼接,容易正反斜杠混淆,这样跨平台性会好一些的。
我们可以去upload的路径了
之前的路径放在了全局变量中,可以直接用
直接用用户名作为文件名称,这样不容易撞,防止不同用户的自己的文件名字一样
改info信息
效果
原来
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wxhhnvgZ-1576636543486)(img/
改完
上传的头像都在upload里面,本来有的会被替换掉,本来没有的会增加到
注意 get请求是上传不了文件的
文件的上传都是post请求,不带源码的
get的所有请求,会进入到url里面去
如果改成了GET,修改数据会显示到url
如果改成了GET,上传图片文件的时候url只是会有一些字符串的文件名,这样上传不了任何什么的,所以必须要post来提交相关很多信息。