深入理解 Django 的 INSTALLED_APPS 與應用設置
更新日期: 2024 年 12 月 1 日
本文為 Django 新手教學,第 7 篇:
- 如何快速開啟 Django 開發環境:新手指南
- 使用 Django 設置網站路徑:新手入門指南
- 使用 Django 的路由模組化管理:入門指南
- 在 Django 中使用網頁樣板:入門指南
- 使用 Django 樣板繼承實現頁面佈局共享
- Django 的 MTV 架構與 startapp 指令全面解析
- 深入理解 Django 的 INSTALLED_APPS 與應用設置 👈所在位置
- 使用 Django startapp 建立 Resumes 應用:完整指南
在 Django 中,INSTALLED_APPS
是專案配置的重要組成部分,而將功能模組設置為應用(APP)更是 Django 開發的核心理念之一。
然而,新手常常疑惑:為什麼模板能用,卻不一定要將模組設為 APP?
本文將用簡單易懂的方式解釋 INSTALLED_APPS
的作用、模板的使用範圍,以及設定成 APP 的優勢。
INSTALLED_APPS
是幹嘛的?
INSTALLED_APPS
是 Django 專案的「APP 啟用清單」,列出了所有需要啟用的功能模組。
每個模組(APP)在 INSTALLED_APPS
中註冊後,Django 會自動掃描並啟用它的功能。
舉例說明
假設你的專案是一棟大樓,每層樓代表一個功能模組:
- 管理後台:
admin
- 用戶登入:
auth
- 靜態文件管理:
staticfiles
將模組加入 INSTALLED_APPS
清單,相當於為這層樓開燈,Django 會自動掃描模組內的功能(如數據表、模板目錄、靜態文件等),並將它們整合到專案中,確保能夠正常運行。
為什麼模板不用設為 APP 也能用?
Django 的模板查找機制與 INSTALLED_APPS
沒有直接關聯。
它是通過 settings.py
中的 TEMPLATES
配置找到模板的。
只要模板存放的位置正確,Django 就能使用它們。
模板為什麼能用?
在 settings.py
中,Django 透過 DIRS
指定模板的路徑:
TEMPLATES = [
{
'DIRS': ['templates'], # 指定 "templates" 資料夾為模板目錄
...
}
]
只要模板放在 templates
資料夾內,Django 就能根據 DIRS
配置找到並渲染它們,即使模組未設為 APP 也不影響。
那為什麼要把模組設為 APP?
模板能用只是一種基本功能,而將模組設為 APP 能開啟更多進階功能,讓開發更加結構化和高效。
設定為 APP 的優勢
(1)讓模型(Model)能用
- 若需要在數據庫中存儲數據(如頁面標題、內容等),需要在
models.py
定義數據結構。
但若模組未設為 APP,Django 無法幫你管理這些數據表。 - 設為 APP 後,可以在
models.py
定義數據模型,並使用 Django 的 ORM 功能自動創建和管理數據表。
(2)整合 Django 的其他功能
設為 APP 後,Django 會自動掃描以下內容:
- 模板目錄:模組內的模板目錄(如
pages/templates
)將自動被識別。 - 靜態文件:模組內的靜態文件(如
pages/static
)可被collectstatic
收集。 - URL 配置:模組內的
urls.py
可被主應用整合,輕鬆實現路由管理。
(3)提升模組化結構
如果你的模組包含多個頁面(如首頁、關於我們、聯絡我們),設為 APP 能幫助你將這些功能集中管理:
- 模組化結構使代碼更加清晰易維護。
- 未來若需要將模組移植到其他專案,只需複製該 APP 即可。
總結
是否設為 APP | 全域模板 | 模組內模板 | 數據模型 | 靜態文件 | 模組化管理 |
---|---|---|---|---|---|
否 | ✅ | ❌ | ❌ | ❌ | ❌ |
是 | ✅ | ✅ | ✅ | ✅ | ✅ |
關鍵點
- 不設為 APP:模板可以使用,因為模板是根據
DIRS
配置找到的,與 APP 無關。 - 設為 APP 的好處:
- 能定義數據模型並管理數據表。
- 自動整合模板、靜態文件和路由配置。
- 提升模組化程度,便於維護和移植。
如果你的模組僅用於簡單的模板渲染,設不設為 APP 沒太大區別。
但如果需要數據庫、靜態文件或 URL 支持,將模組設為 APP 能帶來更大的靈活性和效率。
希望這篇文章能幫助新手理解 INSTALLED_APPS
與 APP 設置的意義!