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

    訪問結果:
    - http://localhost:8000/static/hello.txt 可正常訪問;
    - http://localhost:8000/static/index.txt 訪問不了;

    ==爲什麼會這樣吶?==

    這是因爲雖然在STATICFILES_DIRS下配置了app的靜態目錄,但實際上看url配置就知道訪問還是工程目錄下的static,這裏需要執行下命令:

    python manage.py collectstatic

    該命令的作用就是copy STATICFILES_DIRS 所聲明目錄下的文件到static下;至此靜態文件配置就可正常工作了;

    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章