專業 Django 後端開發指引。在建立 Django 模型、檢視、序列化器或 API;偵錯 ORM 查詢或遷移;最佳化資料庫效能;實作驗證;撰寫測試;或使用 Django REST Framework 時使用。遵循 Django 最佳實務與現代模式。
Django Expert
概述
此技能提供 Django 後端開發的專業指引,涵蓋模型、檢視、Django REST Framework、表單、驗證、測試與效能最佳化。遵循官方 Django 最佳實務與現代 Python 慣例,協助你建立穩固、可維護的應用程式。
主要能力:
- 使用最佳 ORM 模式的模型設計
- 檢視實作(FBV、CBV、DRF viewsets)
- Django REST Framework API 開發
- 查詢最佳化與效能調校
- 驗證與權限
- 測試策略與模式
- 安全最佳實務
使用時機
遇到以下觸發條件時,請呼叫此技能:
模型與資料庫工作:
- "建立一個 Django 模型來..."
- "最佳化這個 queryset/資料庫查詢"
- "為...產生遷移"
- "設計資料庫綱要..."
- "修正 N+1 查詢問題"
檢視與 API 開發:
- "為...建立 API 端點"
- "建立一個 Django 檢視來..."
- "實作 DRF 序列化器/檢視集"
- "為 API 加入篩選/分頁"
驗證與安全:
- "實作驗證/權限"
- "建立自訂使用者模型"
- "保護此端點/檢視"
測試與品質:
- "為這個 Django 應用程式撰寫測試"
- "偵錯這個 Django 錯誤/問題"
- "審查 Django 程式碼中的問題"
效能與最佳化:
- "這個 Django 檢視很慢"
- "最佳化資料庫查詢"
- "為...加入快取"
生產環境部署:
- "將 Django 部署到生產環境"
- "為生產環境設定 Django"
- "為 Django 設定 HTTPS/SSL"
- "生產環境設定檢查清單"
- "設定生產環境資料庫/快取"
指示
處理 Django 開發請求時,請遵循以下工作流程:
1. 分析請求並收集背景資訊
識別任務類型:
- 模型設計(資料庫綱要、關聯、遷移)
- 檢視/API 開發(FBV、CBV、DRF viewsets、序列化器)
- 查詢最佳化(N+1 問題、資料庫效能)
- 驗證/權限(使用者模型、存取控制)
- 測試(單元測試、整合測試、fixtures)
- 安全審查(CSRF、XSS、SQL 注入、權限)
- 生產環境部署(設定、HTTPS、資料庫、快取、監控)
- 模板渲染(Django 模板、context processors)
利用可用的背景資訊:
- 如果
django-ai-boostMCP 伺服器可用,請用它來了解專案結構與現有模式 - 閱讀相關現有程式碼以了解慣例
- 檢查 Django 版本以確保相容性
2. 載入相關參考文件
根據任務類型,參考適當的捆綁文件:
-
模型/ORM 工作 ->
references/models-and-orm.md- 模型設計模式與欄位選擇
- 關聯設定(ForeignKey、ManyToMany)
- 自訂管理員與 QuerySet 方法
- 遷移策略
-
檢視/API 開發 ->
references/views-and-urls.md+references/drf-guidelines.md- FBV 與 CBV 的決策標準
- DRF 序列化器、viewsets 與 routers
- URL 設定模式
- 中介軟體與請求/回應處理
-
效能問題 ->
references/performance-optimization.md- 查詢最佳化技術(select_related、prefetch_related)
- 快取策略(Redis、Memcached、資料庫快取)
- 資料庫索引與查詢分析
- 連線池與非同步模式
-
生產環境部署 ->
references/production-deployment.md- 關鍵設定(DEBUG、SECRET_KEY、ALLOWED_HOSTS)
- HTTPS 與 SSL/TLS 設定
- 資料庫與快取設定
- 靜態/媒體檔案服務
- 錯誤監控與記錄
- 部署流程與健康檢查
-
安全問題 ->
references/security-checklist.md- CSRF/XSS/SQL 注入防範
- 驗證與授權模式
- 安全設定實務
- 輸入驗證與清理
-
測試任務 ->
references/testing-strategies.md- 測試結構與組織
- Fixtures 與 factories
- 模擬外部相依
- 覆蓋率與 CI/CD 整合
3. 遵循 Django 最佳實務實作
程式碼品質標準:
- 遵循 PEP 8 與 Django 編碼風格
- 盡可能使用 Django 內建功能而非第三方套件
- 保持檢視精簡,使用服務/管理員處理商業邏輯
- 撰寫具描述性的變數名稱,並為複雜邏輯加入 docstrings
- 使用適當的例外處理優雅地處理錯誤
Django 特定模式:
- 對 FK/OneToOne 使用
select_related(),對反向 FK/M2M 使用prefetch_related() - 利用基於類別的檢視與 mixins 進行程式碼重用
- 使用 Django 表單/序列化器進行驗證
- 遵循 Django 的遷移工作流程(絕不編輯已套用的遷移)
- 使用 Django 內建的安全功能(CSRF tokens、auth decorators)
API 開發(DRF):
- 對標準 CRUD 操作使用 ModelSerializer
- 實作適當的分頁與篩選
- 使用適當的權限類別
- 遵循 RESTful 慣例設計端點
- 在進行破壞性變更時對 API 進行版本控制
4. 驗證與測試
在提出解決方案之前:
程式碼審查:
- 檢查 N+1 查詢問題(在腦中模擬 Django Debug Toolbar)
- 確認正確的錯誤處理與邊界情況
- 確保遵循安全最佳實務
- 確認遷移乾淨且可逆
測試考量:
- 為新功能建議或撰寫適當的測試
- 驗證關鍵路徑的測試覆蓋率
- 檢查 fixtures/factories 是否可維護
效能檢查:
- 檢視資料庫查詢的效率
- 考慮快取機會
- 確認正確使用資料庫索引
捆綁資源
references/ - 完整的 Django 文件,視需要載入到背景資訊中
這些參考檔案提供比本 SKILL.md 概述更詳細的指引:
-
references/models-and-orm.md(約 11,000 字)- 模型欄位類型與最佳實務
- 關聯設定(ForeignKey、OneToOne、ManyToMany)
- 自訂管理員與 QuerySet 方法
- 遷移模式與常見陷阱
- 資料庫層級約束與索引
-
references/views-and-urls.md(約 17,000 字)- 函式型檢視與類別型檢視的取捨
- CBV mixins 與繼承模式
- URL 路由與反向解析
- 中介軟體實作
- 請求/回應生命週期
-
references/drf-guidelines.md(約 18,000 字)- 序列化器模式(ModelSerializer、巢狀序列化器)
- ViewSet 與 router 設定
- 分頁、篩選與搜尋
- 驗證與權限類別
- API 版本控制策略
- API 效能最佳化
-
references/testing-strategies.md(約 18,000 字)- 測試組織與結構
- Factory 模式與 fixtures 的比較
- 測試檢視、模型與序列化器
- 模擬外部服務
- 測試資料庫最佳化
- CI/CD 整合
-
references/security-checklist.md(約 12,000 字)- CSRF 保護實作
- XSS 防範技術
- SQL 注入防禦
- 驗證最佳實務
- 權限與授權模式
- 安全設定設定
-
references/performance-optimization.md(約 14,000 字)- 查詢最佳化(select_related、prefetch_related、only、defer)
- 資料庫索引策略
- 快取層(Redis、Memcached、資料庫快取)
- 資料庫連線池
- 分析與監控工具
- 非同步檢視與背景任務
-
references/production-deployment.md(約 20,000 字)- 關鍵設定(DEBUG、SECRET_KEY、ALLOWED_HOSTS)
- 資料庫設定與連線池
- HTTPS/SSL 設定與安全標頭
- 靜態與媒體檔案服務
- 使用 Redis/Memcached 快取
- 生產環境郵件設定
- 使用 Sentry 進行錯誤監控
- 記錄與健康檢查
- 零停機部署策略
-
references/examples.md- 實作範例- 使用自訂管理員的模型設計
- N+1 查詢最佳化
- DRF API 端點實作
- 撰寫 Django 測試
其他注意事項
Django 版本相容性:
- 生產環境考慮使用 LTS 版本(4.2、5.2)
- 升級時檢查棄用警告
- 使用
django-upgrade工具進行自動化遷移
應避免的常見陷阱:
- 循環匯入(使用延遲參考)
- 在關聯上遺漏
related_name - 忘記在頻繁查詢的欄位上建立資料庫索引
- 使用
get()時未處理例外 - 模板與序列化器中的 N+1 查詢




