Django setting.py的STATIC_URL、STATIC_ROOT和STATICFILES_DIRS
阿新 • • 發佈:2018-12-22
前後端(VUE + Django)部署專案坑真多~
http://127.0.0.1:8080/index可以正常訪問,但是後面的js全部404。
後來通過http://127.0.0.1:8080/index.html訪問index.html檔案發現也是提示404。第一感覺是VUE腳手架的配置問題,也可能覺得Django自己熟悉,且http://127.0.0.1:8080/index也能正常訪問。但實際就是自己不清楚STATIC_URL的作用。
- STATIC_URL
Django通過STATIC_URL配置對映,讓瀏覽器可以直接訪問靜態檔案。
http://127.0.0.1:8080/index.html訪問index.html報404錯誤,發現setting的STATIC_URL配置的路徑有問題。
STATIC_URL = '/blogWeb/'
雖然這次沒遇到STATIC_ROOT和STATICFILES_DIRS的問題,但一直有疑惑,二者的區別,到底有什麼用呢?
- STATIC_ROOT
STATIC_ROOT 是在部署靜態檔案(執行python manage.py collectstatic)時,所有的靜態文靜放到此目錄。
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
- STATICFILES_DIRS
Django如果有多個App應用,可以把幾個應用的靜態檔案放到一個公共的目錄。STATICFILES_DIRS就是設定這個共用目錄的,讓應用程式先到STATICFILES_DIRS設定的共用目錄裡查詢,如果沒找到再去STATIC_ROOT設定的目錄查詢。
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'blogWeb')]