要清楚它们的区别,就要搞清楚这三个常量是干什么用的。
1、STATIC_ROOT
# BASE_DIR 是项目的绝对地址
STATIC_ROOT = os.path.join(BASE_DIR, 'xxxxxx')
这个常量在开发模式中不会用到,在部署的时候才会用到。
部署的时候执行python manage.py collectstatic,django会把所有App下的static文件都复制到STATIC_ROOT文件夹下
2、STATICFILES_DIRS
开发模式中需要用到。静态文件一般放在两个地方:
(1)每个App下面的static目录
(2)项目根目录下的static目录(因为有些静态文件不是某个app独有的)
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'common_static'),
)
STATICFILES_DIRS告诉django,首先到STATICFILES_DIRS里面寻找静态文件,其次再到各个app的static文件夹里面找
注意:django查找静态文件是惰性查找,查找到第一个,就停止查找了
3、STATIC_URL
STATIC_URL = '/static/'
django利用STATIC_URL来让浏览器可以直接访问静态文件
这样假如你项目根目录/static/下有一个123.png的图片
那么就可以直接通过浏览器http://IP:端口号/static/123.png来访问你的图片了