涉及到的名词
-
setting.py
中的STATIC_URL
、STATIC_ROOT
、STATICFILES_DIRS
他们都是存放静态资源的地方
-
template
模板中static
、staticfiles
一、 setting.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "commonStatic/")
]
STATIC_ROOT = 'assert'
STATIC_URL
是在某个具体的App下新建static目录,用来存放与App相关的静态资源。
STATICFILES_DIRS
是在项目目录下新建commomStatic目录,用来存放多个App之间公共的静态资源。
STATIC_ROOT
是项目部署的时候才会用到的,是配合Nginx使用的。他的作用就是收集(复制)每个App下static中静态资源以及项目commonStatic中的静态资源到STATIC_ROOT对应的assert文件夹中。使用python manage.py collectstatic
来做这一步操作。所以STATIC_ROOT 与 STATICFILES_DIRS的路径不能重复。
二、template中{%load static%} 与 {%load staticfiles%}
{%load static%}
无论是STATIC_URL引入的静态资源,还是STATICFILES_DIRS引入的静态资源,在html模板中使用的时候, 路径都为static。
staticfiles
是早先版本为了处理非本地存储资源。
在Django 1.10之前:staticfiles加载一个模板标签,可以管理静态不能(或不容易)的非本地存储;
来自Django 1.10:contrib.staticfiles应用程序仍然存在但其模板标签将被删除只有{%static%}模板标签保留;
从Django 2.0(我相信):{%load staticfiles%}被删除.
👌 that's all!