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/