静态文件处理

一、静态文件处理

通常页面中需要包含很多的静态文件,比如图片、音乐、视频等,才能使页面表现的更生动。
另外,页面中引用的外部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来提交相关很多信息。