🔹 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 设计原则