Django - 收集靜態檔案
處理靜態檔案
在你的專案中,像樣式表、JavaScript 和圖片這樣的靜態檔案,在 DEBUG = False
時 Django 不會自動處理。
當 DEBUG = True
時,這工作正常,我們只需要將它們放在應用程式的 static
資料夾中。
當 DEBUG = False
時,必須先收集靜態檔案並將其放入指定資料夾,然後才能使用它們。
收集靜態檔案
要收集你專案所需的所有靜態檔案,首先在 settings.py
檔案中指定一個 STATIC_ROOT
屬性。
這指定了你想要收集靜態檔案的資料夾。
你可以隨意命名資料夾,我們將其命名為 productionfiles
my_tennis_club/my_tennis_club/settings.py
:
.
.
STATIC_ROOT = BASE_DIR / 'productionfiles'
STATIC_URL = 'static/'
.
.
你可以手動建立此資料夾並將你專案的所有靜態檔案收集並放入此資料夾,但 Django 提供了一個命令可以為你完成此操作
py manage.py collectstatic
這將產生以下結果:
已將 131 個靜態檔案複製到 'C:\Users\your_name\myworld\my_tennis_club\productionfiles'。
131 個檔案?為什麼這麼多?這是因為 Django 內建的管理使用者介面。我們希望在生產環境中保留此功能,它附帶了大量的樣式表、字型、圖片和 JavaScript 檔案。
my_tennis_club
members/
my_tennis_club/
productionfiles/
admin/
myfirst.css
示例應能正常工作
現在你已經收集了專案的靜態檔案,如果你已經安裝了 WhiteNoise,那麼來自新增靜態檔案章節的示例將最終能夠正常工作。
啟動伺服器並檢視結果
py manage.py runserver
在你的瀏覽器中檢視結果: 127.0.0.1:8000/testing/
。
示例
my_tennis_club/members/templates/template.html
:
{% load static %}
<!DOCTYPE html>
<html>
<link rel="stylesheet" href="{% static 'myfirst.css' %}">
<body>
{% for x in fruits %}
<h1>{{ x }}</h1>
{% endfor %}
</body>
</html>
執行示例 »