跳轉至

建立 2026-09-17 更新 2026-09-17

Static Files

Static files(靜態檔案) 指 CSS、JavaScript、圖片這類內容不會因請求而改變的檔案,與 Model 產生、會變動的資料不同。Django 提供一套機制,讓開發時與正式上線時都能用同一套方式在 Template 中引用這些檔案。

官方文件:How to manage static filesHow to deploy static filesDjango Settings

settings.py 中的設定

INSTALLED_APPS 需要有 django.contrib.staticfiles(新建立的 Project 預設已加入),並設定 STATIC_URL(預設也已設定好):

STATIC_URL = "static/"

在 Template 中使用

Template 中要先載入 static 標籤庫,再用 {% static %} 反查靜態資源實際對應的網址:

{% load static %}

<img src="../{% static 'my_app/example.jpg' %}" alt="My image">

{% static %} 而不是直接寫死路徑,好處是正式環境常會把靜態檔案搬到 CDN 或另一個網域,{% static %} 會自動依 STATIC_URL 產生正確的網址,不用逐一修改 Template。

App 相關的靜態資源放哪裡

每個 App 相關的靜態資源,通常放在該 App 底下的 static/ 目錄。慣例上會在 static/ 底下再建立一層與 App 同名的子目錄(原理與 Templates 頁提到的樣板目錄慣例相同),避免不同 App 的檔名互相覆蓋:

my_app/
└── static/
    └── my_app/
        └── example.jpg

部署時收集靜態檔案

開發階段,runserver 會自動幫你從各個 App 的 static/ 目錄找檔案。但正式環境通常不會用 runserver,而是交給 Web Server(例如 nginx)直接服務靜態檔案,效能更好。上線前需要執行:

python manage.py collectstatic

這個指令會把所有 App 的靜態檔案,統一收集到 STATIC_ROOT 設定指定的目錄,之後就能設定 Web Server 直接指向這個目錄。詳細的部署流程請見 Deployment

下一步

靜態檔案設定好之後,接著看整體部署流程:Deployment