django-關於靜態檔案
阿新 • • 發佈:2019-02-04
問題
在開發中通常會使用到css,js,img等靜態檔案,關於django如何處理以及配置還是比較糾結,其實官網中有給出詳細說明,只是剛入門者容易混,這裡記錄下配置流程。
配置
1.setting.py先配置
在settings.py中配置靜態檔案位置,直接給出配置程式碼:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "core/static"),
]
說明:
- STATIC_URL:
配置url地址,當我們要訪問靜態檔案時url地址,這裡只是做其中一部分path,結合urlconf會詳細說明;STATIC_ROOT:
配置靜態檔案存放目錄,如上程式碼所示即在工程的static目錄下存放這些檔案;STATICFILES_DIRS:
可能我們工程下會有多個app,或者還會牽涉到其它的靜態資原始檔目錄,STATICFILES_DIRS就是列出一些檔案目錄,如,在app core下static目錄,此目錄下存放的就是隻與該app相關的資原始檔;
2.配置url
在urls.py下:
urlpatterns = [
path('' , views.home),
path('list/', views.blog_list, name='blog_list'),
path('cal/', views.add, name='cal'),
url(r'^example/(?P<name>[A-Za-z]+)/$', views.example, name="example")
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
3.驗證
分別在工程static以及app core的static目錄下放檔案hello.txt, index.txt
==為什麼會這樣吶?==
這是因為雖然在STATICFILES_DIRS下配置了app的靜態目錄,但實際上看url配置就知道訪問還是工程目錄下的static,這裡需要執行下命令:
python manage.py collectstatic
該命令的作用就是copy STATICFILES_DIRS 所宣告目錄下的檔案到static下;至此靜態檔案配置就可正常工作了;