django 静态资源共享

我们知道,在django里面引入静态文件的时候,是在每个application里面都建立一个static文件夹,

然后在模板里:

如果是图片等资源可以直接在URL里加上static/就好了,如:

<img src="static/Home/images/1.jpg" width="100%" height="400px">
这是
我的目录结构是:


如果我们想引入一些框架类的东西,比如bootstrap,或者公共js文件,这些是整个project共享而不是单独属于哪个app的,那我们总不能在每个app的static文件夹里都放一遍吧,所以还是要做一个公共static文件夹来存放这些东西。

要做到这一点我们首先也要独立于所有的app文件夹之外建立一个static文件夹:



然后我们要在project的settings.py文件里面增加这样的内容:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

如上,把总的static的绝对路径加上去


然后在app的templates文件夹里的html文件引用的时候就可以

    {% load staticfiles %}
    <script type="text/javascript" src='{% static 'scripts/jquery-2.2.0.js'%}'></script>
    <script type="text/javascript" src='{% static 'bootstrap/js/bootstrap.min.js'%}'></script>
    <link href='{% static 'bootstrap/css/bootstrap.min.css'%}' rel="stylesheet" type="text/css" />
此时我总的static的目录结构如下:

可能有人会问:为啥我之前把这些文件放在单独的app的路径下面,引用的时候跟上述的代码类似,就像这样:

如果是在一个名叫Information的app的文件夹下:

    <link href="{% static 'Information/css/Information_style.css' %}" rel="stylesheet" type="text/css" /> 

确实,那样也可以执行,django在找static文件的时候,优先找公共的static文件,如果找不到就去对应的app文件夹里的static去找。

所以我们最好不要重名就好。

之后我又一想,为什么我们在初学django的目录规则的时候要在每个app里面的static文件夹下再创建一个和app名字一样的文件夹呢?

我想也是这一查找机制的原因吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值