flask的使用:更改静态文件夹后,在html中写静态文件地址踩的坑(记录)

这几天和同学一起写网页,接手了继续美化网页的活时遇到了一些关于写静态文件地址的麻烦。

首先同学从网上扒的模板里更改了静态文件夹,

app = Flask(__name__)
app._static_folder = "./templates/static"

然后为了能够加载出效果,同学把文件夹结构改成了这样,其中,templates文件夹中存放了static文件夹和result_im.html等动态文件(以下皆以result_im.html为例),bu文件夹中存放着我们写的静态html文件(以下皆以2.html为例)。


 

由于result_im.html模板中的css等文件加载,使用的方式都是url_for来加载静态文件,我们也照猫画虎,稍加改动,便能够在result_im.html文件中成功地放2.html的链接了。改动如下:

<!--模板中能够成功加载css文件的写法-->
<link href="{{url_for('static',filename='css/style.css')}}" rel="stylesheet">

<!--下面为改动后正确的2.html链接方式-->
<a href="{{url_for('static',filename='bu/2.html')}}">

令我困惑的是,之前静态文件夹设置的是./templates/static,但是url_for中的文件夹直接写的是static,成功找到了文件,于是我当时猜测要不是url_for的第一个参数应该直接写静态文件夹名即可,要不就是由于result_im.html在templates文件夹内,所以url_for拼接出来的url是./static/css/style.css(好像最后验证出来都不是正确的?)。

然后我们想在2.html中也加载模板,由于如前文所言,我们url_for中的文件夹直接写的是static,成功找到了文件,所以我想先尝试下,在2.html位于static文件夹里的bu文件夹内的情况下,上述的那种写法是否还能直接使用。于是我把这些css等相关的加载代码复制粘贴到2.html中,结果失败了,效果并没有被渲染出来:

 观察后端报错发现,url_for构造出来的文件地址是错误的,url_for没有起到作用。

在网络上搜索解决方法时,由于常规的做法是static和templates同级,而我对html并不熟悉,所以后来放弃搜索,跌跌撞撞试了很多写法,经过一系列尝试后发现,其实直接从static文件夹开始写文件地址,可以顺利地加载出文件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值