1. 程式人生 > >Django setting.py的STATIC_URL、STATIC_ROOT和STATICFILES_DIRS

Django setting.py的STATIC_URL、STATIC_ROOT和STATICFILES_DIRS

前後端(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的作用。

  1. 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的問題,但一直有疑惑,二者的區別,到底有什麼用呢?

  1. STATIC_ROOT
    STATIC_ROOT 是在部署靜態檔案(執行python manage.py collectstatic)時,所有的靜態文靜放到此目錄。
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
  1. STATICFILES_DIRS
    Django如果有多個App應用,可以把幾個應用的靜態檔案放到一個公共的目錄。STATICFILES_DIRS就是設定這個共用目錄的,讓應用程式先到STATICFILES_DIRS設定的共用目錄裡查詢,如果沒找到再去STATIC_ROOT設定的目錄查詢。
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'blogWeb')]