🔹 Django 专案初始化与模组设计

以开发部落格为例,採用 MVT(Model-View-Template)架构,每个 APP 代表一个独立功能模组,专案名称:blog,帐号管理 APP:users,文章管理 APP:posts。

🔹 建立 Django 专案与 APP

建立 Django 专案

django-admin startproject blog

建立 APP(模组化管理)

python manage.py startapp users
python manage.py startapp posts

🔹 Django 的档案架构

一般 Django 专案的档案架构

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 # 环境变数设定

Django RESTful API 专案的档案架构

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/ 使用者上传的档案

🔹 RESTful API 主要差异点:

档案
功能
serializers.py 负责 Model <-> JSON 转换
permissions.py API 权限管理(如 JWT、OAuth)
authentication.py API 验证(如 Token、OAuth)
views.py 改为 API 处理逻辑(透过 APIView 或 ViewSet)
templates/ 通常不使用,因为前端透过 API 取得 JSON

🔹 参考文件

  • Django 官方文件
  • Django REST Framework 官方文件
  • RESTful API 设计原则