首頁  >  文章  >  後端開發  >  Django 中的 STATICFILES_DIR、STATIC_ROOT 和 MEDIA_ROOT 有什麼不同?

Django 中的 STATICFILES_DIR、STATIC_ROOT 和 MEDIA_ROOT 有什麼不同?

Patricia Arquette
Patricia Arquette原創
2024-10-25 13:23:30240瀏覽

What's the Difference Between STATICFILES_DIR, STATIC_ROOT, and MEDIA_ROOT in Django?

Django 中STATICFILES_DIR、STATIC_ROOT 和MEDIA_ROOT 的區別

Django 中的靜態檔案是不會改變的文件,例如圖片、 CSS 和 CSS JavaScript。 Django 根據這些文件的目的和用途以不同的方式管理這些文件。

STATICFILES_DIRSTATIC_ROOT 都用於靜態文件,但它們有不同的用途。 STATICFILES_DIR 用來指定 Django 在執行collectstatic 指令時將在其中尋找靜態檔案的其他目錄。如果您想要將靜態檔案保存在與專案主目錄不同的位置(例如專用的靜態檔案伺服器中),這非常有用。

STATIC_ROOT 用於指定 Django 將在何處收集所有靜態檔案並在部署專案時使它們可用。這通常會設定為專案目錄以外的位置,例如範例中的 /home/user/project/django1/top/listing/static。

MEDIA_ROOT 用於使用者-上傳的文件,例如影像或影片。與靜態文件不同,上傳的文件可以更改,並且通常沒有版本控制。 MEDIA_ROOT 指定這些檔案在伺服器上的儲存位置。

在您的情況下,您使用 MEDIA_ROOT 來儲存上傳的照片,這是正確的。但是,當您嘗試在管理員中包含自訂 JS 腳本時,您使用了 STATICFILES_DIRS 而不是 STATIC_ROOT。這就是為什麼您在載入 JS 腳本時遇到 404 錯誤的原因。

要解決此問題,您可以:

  • 使用 STATIC_ROOT 指定位置靜態檔案並將自訂 JS 腳本新增至該位置。
  • 使用 STATICFILES_DIRS 新增一個附加目錄,Django 將在其中尋找靜態檔案並將 JS 腳本新增至該目錄。

請記住,STATIC_ROOT僅在部署專案時使用,因此建議在開發期間使用STATICFILES_DIRS,部署時使用STATIC_OT .

以上是Django 中的 STATICFILES_DIR、STATIC_ROOT 和 MEDIA_ROOT 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn