django1.3新加入了一個靜態資源管理的app,django.contrib.staticfiles。在以往的django版本中,靜態資源的管理一向都是個問題。部分app發布的時候會帶上靜態資源檔案,在部署的時候你必須手動從各個app中將這些靜態資源檔案複製到同一個static目錄。在引入staticfiles後,你只需要執行./manage.py collectstatic就可以很方便的將所用到app中的靜態資源複製到同一目錄。
staticfiles的引入,方便了django靜態檔案的管理,不過感覺staticfiles的文檔寫的並不是太清楚,初次使用的時候還是讓我有些困惑。
下面簡單的介紹一下staticfiles的主要配置:
- STATIC_ROOT:運行manage.py collectstatic後靜態檔案將複製到的目錄。注意:不要把你項目的靜態檔案放到這個目錄。這個目錄只有在運行collectstatic時才會用到。我最開始想當然的以為這個目錄和MEDIA_ROOT的作用是相同的,致使在開發環境下一直無法找到靜態檔案。
- STATIC_URL:設定的static file的起始url,這個只可以在template裡面引用到。這個參數和MEDIA_URL的含義差不多。
- STATICFILES_DIRS:除了各個app的static目錄以外還需要管理的靜態檔案位置,比如項目公用的靜態檔案差不多。和TEMPLATE_DIRS的含義差不多。
- 各個APP下static/目錄下的靜態檔案django的程式開發伺服器會自動找到,這點和以前APP下的templates目錄差不多。
- 在urls.py中加入靜態檔案處理的代碼
-
from django.contrib.staticfiles.urls import staticfiles_urlpatterns # ... the rest of your URLconf goes here ... urlpatterns += staticfiles_urlpatterns()