是時候來了解一下STATIC_ROOT、STATICFILES_DIRS、STATIC_URL三者的不同了,之前都只是依樣畫胡虜的做。
在部署網站的時候,下完'git push heroku master'指令後,會看到終端機跑出'python manage.py collectstatic',其目的是要將所有靜態檔案蒐集到指定目錄,所以開發者需要在settings.py新增'STATIC_ROOT'項目,例如:
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
#須為絕對路徑,資料夾名看網上大家用的不一定一樣。
STATICFILES_DIRS代表的是放靜態文件的路徑,而Django就是掃遍STATICFILES_DIRS裡的絕對路徑逐一蒐集到STATIC_ROOT裡的。
mysite專案的static資料夾是獨立於app的,如果有其他app的,我規劃靜態文件也是通通都放這裡,像公共資料夾一樣。當然也可以在各app底下建立專屬的static資料夾,STATICFILES_DIRS因此擴充成下面:
STATICFILES_DIRS = [
"/mysite/quiz/static",
"/mysite/sth/static",
]
跟要在urls.py加上每個app的urlpattern一樣,靜態檔案也需要一組url,才得以在瀏覽器瀏覽,而STATIC_URL格式如下:
STATIC_URL = '/static/'
#static是資料夾名稱。
#只要在瀏覽器輸入http://158.0.0.1:8000/static/result.css,就可以看得到檔案內容。
小結:STATIC_ROOT只有在部署網站時才會需要用到。