Django静态资源管理

当我们配置Django的静态文件时,在setting.py中主要设计如下几行代码

# setting.py
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
# BASE_DIR 是项目的绝对地址
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static')

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

STATIC_URL = '/static/'

在实际情况中,我们一般安置Django涉及的静态文件方案有两种:

  1. 在每个App中创建一个static文件夹,将静态文件放到里面,在加载静态文件时,比如要在模板中用到静态文件,django会自动在每个app里面搜索static文件夹(因此不要把文件夹的名字写错, 否则django找不到文件夹)
  2. 在所有的app文件外面,建立一个公共的文件夹,所有的APP都可以来访问这个公共文件夹中的静态资源,如此可能易于管理(但如此不是必须,app也可以跨app进行访问静态资源,因为最后部署的时候都会在STATIC_ROOT中存放)

注意:静态文件放在对应的 app 下的 static 文件夹中 或者 STATICFILES_DIRS 中的文件夹中,当setting.pyDEBUG = True 时,Django 就能自动找到放在里面的静态文件。

STATIC_ROOT

STATIC_ROOT 是在部署静态文件时所有的静态文静聚合的目录。命令如下:

python manage.py collectstatic

django会把所有的static文件都复制到STATIC_ROOT文件夹下

STATICFILES_DIRS

在app内部的static文件夹下Django会自动搜查,但在公共的文件夹中,命名是随意的。
那么如何让django知道你把一些静态文件放在了此公共文件夹中呢,就需要配置STATICFILES_DIRS了。

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

如上告诉django到首先到STATICFILES_DIRS里面寻找静态文件,其次再到各个app的static文件夹里面找(注意, django查找静态文件是惰性查找,查找到第一个,就停止查找了)

collect_static目录下有文件index.html,访问 127.0.0.1:80/static/index.html 即可访问到此静态资源。

注意/staticSTATIC_URL内容所确定,若STATIC_URL内容为/s/,对应访问连接变为/s/index.html

STATIC_URL

Django利用STATIC_URL来让浏览器可以直接访问静态文件,比如:STATIC_URL = ‘/static/’

访问127.0.0.1:80/static/index.html 即可访问到此静态资源

利用前缀 STATIC_URL的具体内容,来映射STATIC_ROOT,127.0.0.1:80/static相当于本地地址的STATIC_ROOT

其他静态资源管理方法

当希望为静态文件分配多个不同的网址时,可以使用如下方法:

# urls.py
from django.conf.urls.static import static
urlpatterns = ...
urlpatterns += static("/mystatic", document_root="./collect_static")

然后访问127.0.0.1:80/mystatic/index.html 即可访问到此静态资源。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlwaysDayOne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值