建立第一個 App¶
開始之前¶
任務目標
在這個章節中,我們會完成:
- 了解 Django App 的概念
- 學習 Project 和 App 的差異
- 建立第一個 Django App
- 了解 App 的目錄結構
- 在
settings.py中註冊 App
什麼是 Django App?¶
在 Django 中,App(應用程式)是一個可重用的功能模組。一個專案(Project)可以包含多個 App,每個 App 負責特定的功能。
Project vs App
- Project(專案):整個網站的設定和路由,包含
settings.py、urls.py等 - App(應用程式):專案中的一個功能模組,如使用者管理、部落格文章、購物車等
一個 Project 可以包含多個 App,一個 App 也可以被多個 Project 重複使用。
為什麼要用 App?¶
想像你在建立一個電商網站,可能需要這些功能:
- 使用者管理(註冊、登入、個人資料)
- 商品目錄(商品列表、分類、搜尋)
- 購物車(加入購物車、修改數量)
- 訂單系統(下單、付款、訂單追蹤)
如果把所有程式碼放在一起,會變得非常難以維護。透過 App,我們可以:
App 的優勢
- 模組化 - 每個功能獨立,容易維護
- 可重用 - 一個 App 可以用在不同專案
- 團隊協作 - 不同人負責不同 App,減少衝突
- 測試方便 - 可以針對單一 App 進行測試
- 職責清晰 - 每個 App 有明確的功能範圍
建立 App¶
使用 startapp 指令建立名為 practices 的 App:
- 有時候會看到
uv run manage.py startapp practices也是可以的,兩者效果完全相同
執行後,會在專案根目錄建立一個 practices 資料夾:
django-playground/
├── practices/ # 新建立的 App
│ ├── __init__.py
│ ├── admin.py # Admin 後台設定
│ ├── apps.py # App 設定
│ ├── migrations/ # 資料庫遷移檔案
│ │ └── __init__.py
│ ├── models.py # 資料庫表定義
│ ├── tests.py # 自動化測試
│ └── views.py # 視圖
├── core/ # 之前建立的專案
│ ├── settings.py
│ ├── urls.py
│ └── ...
├── manage.py
└── ...
App 結構說明¶
models.py¶
定義資料模型,對應資料庫的表
views.py¶
處理請求和回應的邏輯
admin.py¶
設定 Admin 後台要管理哪些資料模型
apps.py¶
App 的設定檔,顯示名稱或其他設定
migrations/¶
存放資料庫遷移檔案。當你修改 models.py 後,Django 會在這裡產生遷移檔案。
tests.py¶
自動化測試程式碼
註冊 App¶
建立 App 後,必須在 settings.py 中註冊,Django 才會載入它。
開啟 core/settings.py,找到 INSTALLED_APPS,並放入你的 App
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"practices",
]
別忘了註冊!
如果沒有在 INSTALLED_APPS 中註冊 App,Django 不會:
- 載入該 App 的 models 與 templates
- 執行該 App 的 migrations
- 在 Admin 中顯示該 App 的資料
命名建議
- 使用小寫字母和底線(snake_case)
- 名稱要簡短且有意義
- 避免使用 Python 或 Django 的保留字
- 在專案中必須是唯一的,例如
auth已經被 Django 使用了我們就不能使用 - 保持專案風格一致(單數、複數 ......)
補充說明:組織 App 的方式
方式一:放在專案根目錄
這是預設的方式,適合小型專案。
方式二:放在 apps 資料夾
適合中大型專案,結構更清晰。
但需要特別注意,使用這種方式時,需要調整 App 的 name:
- 預設會是
blog,需修改成完整的 Python 路徑apps.blog
同時在 settings.py 中也需要修改註冊的方式
任務結束¶
完成!
恭喜你完成了這個章節!現在你已經:
- 了解 Django App 的概念
- 學習 Project 和 App 的差異
- 建立第一個 Django App
- 了解 App 的目錄結構
- 在
settings.py中註冊 App
常見問題¶
一個 App 應該包含多少功能?
一個 App 應該專注在單一職責。如果你發現一個 App 包含太多不相關的功能,考慮拆分成多個 App。
經驗法則:如果你能用一句話描述這個 App 的功能,那它的範圍可能是恰當的。
什麼時候應該建立新的 App?
當你需要:
- 新增一個獨立的功能模組
- 這個功能可能會被其他專案重複使用
- 這個功能的資料模型和邏輯與現有 App 無關