選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Django - 全域性靜態檔案


新增全域性 CSS 檔案

我們已經學習瞭如何在應用程式的 static 資料夾中新增靜態檔案,以及如何在應用程式中使用它。

但是,如果您專案中的其他應用程式也想使用該檔案怎麼辦?

那麼,我們就必須在根目錄建立一個資料夾,並將檔案放在那裡。

僅僅在根目錄建立一個 static 資料夾是不夠的,Django 會處理剩餘的部分。我們需要告訴 Django 在哪裡查詢這些靜態檔案。

首先,在專案的根目錄下建立一個資料夾,這個資料夾的名字可以隨意取,在本教程中我將它命名為 mystaticfiles

my_tennis_club
    db.sqlite3
    manage.py
    my_tennis_club/
    members/
    mystaticfiles/

mystaticfiles 資料夾中新增一個 CSS 檔案,檔名可以隨意選擇,在本例中我們稱之為 myglobal.css

my_tennis_club
    db.sqlite3
    manage.py
    my_tennis_club/
    members/
    mystaticfiles/
        myglobal.css

開啟 CSS 檔案並插入以下內容

my_tennis_club/mystaticfiles/myglobal.css:

body {
  color: violet;
}

修改設定

您需要告訴 Django 也去根目錄的 mystaticfiles 資料夾中查詢靜態檔案,這在 settings.py 檔案中完成。

新增一個 STATICFILES_DIRS 列表

my_tennis_club/my_tennis_club/settings.py:

.
.

STATIC_ROOT = BASE_DIR / 'productionfiles'

STATIC_URL = 'static/'

#Add this in your settings.py file:
STATICFILES_DIRS = [
    BASE_DIR / 'mystaticfiles'
]
.
.

STATICFILES_DIRS 列表中,您可以列出 Django 應該查詢靜態檔案的所有目錄。

BASE_DIR 關鍵字表示專案的根目錄,與 / "mystaticfiles" 一起,意味著根目錄下的 mystaticfiles 資料夾。

搜尋順序

如果您有同名的檔案,Django 會使用第一個找到的檔案。

搜尋首先在 STATICFILES_DIRS 中列出的目錄中進行,按照您提供的順序。然後,如果檔案未找到,搜尋將繼續在每個應用程式的 static 資料夾中進行。


修改模板

現在您有了一個用於整個專案的全域性 CSS 檔案,所有應用程式都可以訪問它。

要在模板中使用它,請使用與 myfirst.css 檔案相同的語法。

在模板開頭新增以下內容

{% load static %}

並像這樣引用檔案

<link rel="stylesheet" href="{% static 'myglobal.css' %}">

示例

my_tennis_club/members/templates/template.html:

{% load static %}
<!DOCTYPE html>
<html>
<link rel="stylesheet" href="{% static 'myglobal.css' %}">
<body>

{% for x in fruits %}
  <h1>{{ x }}</h1>
{% endfor %}

</body>
</html>
執行示例 »

不起作用?

這是正確的。您需要再次收集靜態檔案。


收集靜態檔案

執行 collectstatic 命令來收集新的靜態檔案。

py manage.py collectstatic

這將產生以下結果:

您已請求將靜態檔案收集到目標
位置,如您的設定中所指定

    C:\Users\Your Name\myworld\my_tennis_club\productionfiles

這將覆蓋現有檔案!
您確定要這樣做嗎?

輸入 'yes' 繼續,或輸入 'no' 取消

輸入 yes

輸入 'yes' 繼續,或輸入 'no' 取消: yes

這將產生以下結果:

1 個靜態檔案已複製到 'C:\Users\Your Name\myworld\my_tennis_club\productionfiles',131 個未修改。

示例應該可以工作

啟動伺服器,示例將可以工作。

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 'myglobal.css' %}">
<body>

{% for x in fruits %}
  <h1>{{ x }}</h1>
{% endfor %}

</body>
</html>
執行示例 »


×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援