Django筆記
Django 學習筆記
1. Django 基礎概念
1.1 什麼是 Django
Web 框架簡介 Django 是一個高階的 Python Web 框架,鼓勵快速開發和乾淨、實用的設計。它由經驗豐富的開發者構建,解決了 Web 開發的許多麻煩,讓你可以專注於編寫應用程式而無需重新發明輪子。
Django 的設計哲學
- DRY(Don’t Repeat Yourself):避免重複代碼,提高代碼重用性
- 快速開發:從概念到完成儘可能快速
- Clean Design:鼓勵乾淨、實用的設計
MVT 架構模式(Model-View-Template)
- Model:資料層,定義資料結構和業務邏輯
- View:控制層,處理用戶請求並返回回應
- Template:展示層,負責用戶界面的呈現
Django 的優勢與特色
- 內建管理介面
- 強大的 ORM 系統
- 完善的安全機制
- 豐富的內建功能
- 活躍的社群支援
1.2 環境建置
Python 環境需求
| |
虛擬環境設置
| |
Django 安裝
| |
開發工具推薦
- IDE:PyCharm、VS Code、Sublime Text
- VS Code 擴充套件:Python、Django、SQLite Viewer
- 資料庫工具:DB Browser for SQLite、pgAdmin
2. 專案建立與結構
2.1 建立第一個 Django 專案
建立專案
| |
專案目錄結構解析
myproject/
manage.py # 命令列工具
myproject/
__init__.py # Python 套件標識
settings.py # 專案設定
urls.py # URL 路由配置
wsgi.py # WSGI 部署接口
asgi.py # ASGI 部署接口
manage.py 檔案功能
| |
settings.py 基本配置
| |
2.2 應用程式(App)概念
建立 App
| |
App 目錄結構
blog/
__init__.py
admin.py # 管理介面配置
apps.py # 應用配置
models.py # 資料模型
tests.py # 測試檔案
views.py # 視圖函數
migrations/ # 資料庫遷移檔案
__init__.py
App 註冊與配置
| |
3. URL 路由系統
3.1 URL 配置
主要 urls.py
| |
應用 urls.py
| |
URL 模式(patterns)範例
| |
3.2 進階 URL 配置
命名空間(namespaces)
| |
URL 反向解析
| |
4. 視圖(Views)
4.1 函數型視圖(Function-based Views)
基本視圖結構
| |
處理 GET 和 POST 請求
| |
錯誤處理
| |
4.2 類別型視圖(Class-based Views)
基本 CBV
| |
自訂 CBV
| |
5. 模板系統(Templates)
5.1 模板基礎
基本模板語法
| |
模板繼承
| |
常用模板標籤和過濾器
| |
5.2 靜態檔案處理
設定靜態檔案
| |
在模板中使用靜態檔案
| |
6. 模型(Models)與資料庫
6.1 ORM 基礎
基本模型定義
| |
常用欄位類型
| |
6.2 資料庫操作
遷移操作
| |
QuerySet API
| |
資料庫關係查詢
| |
7. 表單處理(Forms)
7.1 Django 表單基礎
基本表單定義
| |
在視圖中處理表單
| |
表單模板
| |
8. 用戶認證與權限
8.1 用戶認證系統
基本認證視圖
| |
登入模板
| |
8.2 權限與授權
權限裝飾器
| |
在模板中檢查權限
| |
9. 管理介面(Admin)
9.1 Django Admin 基礎
註冊模型到 Admin
| |
建立超級用戶
| |
9.2 Admin 進階客製化
自訂 Admin 動作
| |
10. 靜態檔案與媒體檔案
10.1 靜態檔案管理
設定檔配置
| |
URL 配置
| |
收集靜態檔案
| |
11. 測試
11.1 Django 測試框架
模型測試
| |
視圖測試
| |
執行測試
| |
12. 部署與效能優化
12.1 部署準備
生產環境設定
| |
環境變數管理
| |
requirements.txt
| |
12.2 效能優化
資料庫查詢優化
| |
快取策略
| |
靜態檔案優化
| |
12.3 部署平台
使用 Gunicorn 部署
| |
Nginx 配置
| |
Docker 部署
| |
| |
13. Django REST Framework(API 開發)
13.1 API 開發基礎
安裝和設定 DRF
| |
| |
序列化器(Serializers)
| |
API 視圖
| |
API URL 配置
| |
13.2 進階 API 功能
ViewSets 和 Routers
| |
| |
認證和權限
| |
Token 認證
| |
14. 常用第三方套件
14.1 開發工具
Django Debug Toolbar
| |
| |
Django Extensions
| |
| |
| |
Django Crispy Forms
| |
| |
| |
14.2 功能擴展
Celery(非同步任務)
| |
| |
Django Filters
| |
| |
15. 最佳實務與常見問題
15.1 程式碼品質
專案結構最佳實務
myproject/
├── manage.py
├── requirements/
│ ├── base.txt
│ ├── development.txt
│ └── production.txt
├── myproject/
│ ├── __init__.py
│ ├── settings/
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── development.py
│ │ └── production.py
│ ├── urls.py
│ ├── wsgi.py
│ └── asgi.py
├── apps/
│ ├── blog/
│ ├── users/
│ └── core/
├── static/
├── media/
├── templates/
├── locale/
└── tests/
設定檔分離
| |
模型最佳實務
| |
15.2 常見問題解決
效能問題診斷
| |
記憶體使用優化
| |
除錯技巧
| |
附錄
A. 指令速查表
| |
B. 設定檔案範例
完整的 settings.py 範例
| |
C. 實用資源連結
官方文件
- Django 官方文件:https://docs.djangoproject.com/
- Django REST Framework:https://www.django-rest-framework.org/
- Django 套件索引:https://djangopackages.org/
學習資源
- Django Girls 教學:https://tutorial.djangogirls.org/
- Mozilla Django 教學:https://developer.mozilla.org/zh-TW/docs/Learn/Server-side/Django
- Real Python Django 教學:https://realpython.com/tutorials/django/
開發工具
- Django Debug Toolbar:https://django-debug-toolbar.readthedocs.io/
- Django Extensions:https://django-extensions.readthedocs.io/
- Django Crispy Forms:https://django-crispy-forms.readthedocs.io/
部署相關
- Gunicorn:https://gunicorn.org/
- WhiteNoise:http://whitenoise.evans.io/
- Docker:https://docs.docker.com/