要清楚它們的區別,就要搞清楚這三個常量是幹什麼用的。
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來訪問你的圖片了