1. 程式人生 > >django-關於靜態檔案

django-關於靜態檔案

問題

在開發中通常會使用到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下;至此靜態檔案配置就可正常工作了;