以開發部落格為例,採用 MVT(Model-View-Template)架構,每個 APP 代表一個獨立功能模組,專案名稱:blog
,帳號管理 APP:users
,文章管理 APP:posts
。
建立 Django 專案
django-admin startproject blog
建立 APP(模組化管理)
python manage.py startapp users
python manage.py startapp posts
blog/
│── manage.py # Django 管理指令
│── blog/ # 主專案目錄
│ │── settings.py # 專案設定
│ │── urls.py # 全域路由設定
│ │── wsgi.py # WSGI 伺服器入口
│ │── asgi.py # ASGI 伺服器入口(適用於 WebSocket)
│── users/ # 用戶管理 APP
│ │── admin.py # Django 管理後台
│ │── apps.py # APP 設定
│ │── forms.py # 表單處理
│ │── models.py # 定義資料庫模型
│ │── tests.py # 測試檔案
│ │── views.py # 處理請求與回應
│ │── urls.py # APP 層級路由
│── posts/ # 文章管理 APP
│ │── admin.py
│ │── apps.py
│ │── models.py
│ │── forms.py
│ │── tests.py
│ │── views.py
│ │── urls.py
│── templates/ # HTML 模板
│ │── base.html
│ │── index.html
│── static/ # 靜態檔案(CSS, JS, Images)
│── media/ # 上傳的媒體檔案
│── db.sqlite3 # 預設 SQLite 資料庫
│── .env # 環境變數設定
blog/
│── manage.py # Django 管理指令
│── blog/ # 主專案目錄
│ │── settings.py # 專案設定
│ │── urls.py # 全域路由設定
│ │── wsgi.py # WSGI 伺服器入口
│ │── asgi.py # ASGI 伺服器入口(適用於 WebSocket)
│── users/ # 用戶管理 APP
│ │── admin.py # Django 管理後台
│ │── apps.py # APP 設定
│ │── authentication.py # API 認證機制
│ │── forms.py # 表單處理
│ │── models.py # 資料庫模型
│ │── permissions.py # API 權限管理(如 JWT、OAuth)
│ │── serializers.py # 負責數據轉換 (Model <-> JSON)
│ │── tests.py # 測試檔案
│ │── views.py # API 處理邏輯
│ │── urls.py # APP 層級路由
│── posts/ # 文章管理 APP
│ │── admin.py
│ │── apps.py
│ │── forms.py
│ │── models.py
│ │── serializers.py
│ │── tests.py
│ │── views.py
│ │── urls.py
│── static/
│── media/
│── db.sqlite3
│── .env
檔案 | 功能 |
---|---|
settings.py |
專案設定(資料庫、INSTALLED_APPS、Middleware、CORS 設定等) |
urls.py |
全域 URL 路由設定 |
models.py |
資料庫模型(定義 ORM) |
views.py |
視圖處理請求,返回 HTML 或 JSON(RESTful API) |
serializers.py |
Django REST Framework 序列化(JSON 轉換) |
permissions.py |
API 權限管理 |
authentication.py |
API 驗證與登入邏輯 |
admin.py |
Django Admin 設定 |
tests.py |
測試用例 |
.env |
環境變數(存放 API 金鑰、資料庫密碼等) |
templates/ |
HTML 模板(適用於前後端整合專案) |
static/ |
靜態資源(CSS, JS, Images) |
media/ |
使用者上傳的檔案 |
檔案 | 功能 |
---|---|
serializers.py |
負責 Model <-> JSON 轉換 |
permissions.py |
API 權限管理(如 JWT、OAuth) |
authentication.py |
API 驗證(如 Token、OAuth) |
views.py |
改為 API 處理邏輯(透過 APIView 或 ViewSet ) |
templates/ |
通常不使用,因為前端透過 API 取得 JSON |