Skip to content

第四章 架构设计 - 系统架构总览

4.1 整体架构

项目采用前后端分离的 B/S 架构,后端基于 Django 6.0.3 提供 RESTful API,前端基于 Vue3 + ElementPlus 构建单页应用。系统通过 Nginx 反向代理统一入口,实现静态资源托管与 API 转发。

架构图

浏览器 (Vue3 + ElementPlus)
    |
    v
Nginx (反向代理)
    |
    v
Django Application
    |
    +-- Middleware Chain
    |   +-- CORS (django-cors-headers)
    |   +-- check_login (JWT认证)
    |   +-- PermissionRequired (RBAC鉴权)
    |
    +-- URL Router (application/urls.py)
    |   +-- include() -> 各模块urls.py
    |
    +-- View Layer (views.py)
    |   +-- Class-based Views + decorators
    |
    +-- Service Layer (services.py)
    |   +-- 业务逻辑 + Django ORM
    |
    +-- Model Layer (models.py)
        +-- BaseModel -> 业务模型
    |
    v
MySQL + Redis

4.2 核心分层

系统采用经典的分层架构设计,各层职责明确:

层级职责典型文件
视图层 (View)接收HTTP请求、参数校验、调用Service、返回响应views.py
服务层 (Service)业务逻辑处理、数据组装、事务控制services.py
表单层 (Form)数据验证、类型转换、错误信息生成forms.py
模型层 (Model)数据库表定义、字段约束、关联关系models.py
路由层 (URL)URL到视图的映射注册urls.py

4.3 请求处理流程

一个典型的 API 请求经过以下处理链路:

1. 浏览器发起请求 (携带 Authorization: Bearer <token>)
2. CORS中间件 - 处理跨域预检请求
3. check_login - 验证JWT token有效性
4. URL路由匹配 - 分发到对应视图类
5. PermissionRequired - 验证用户权限节点
6. View.get/post/put/delete - 处理请求
7. Service函数 - 执行业务逻辑
8. R.ok()/R.failed() - 构造统一响应
9. JsonResponse - 返回JSON数据

4.4 模块化设计

每个业务模块(如 example、user、role 等)遵循统一的文件结构:

application/<module>/
    __init__.py      # 包初始化
    apps.py          # Django应用配置
    models.py        # 数据模型
    forms.py         # 表单验证
    services.py      # 业务逻辑
    views.py         # 视图处理
    urls.py          # 路由配置
    admin.py         # Admin后台注册
    migrations/      # 数据库迁移文件

4.5 关键设计决策

前后端分离

  • 后端仅提供 JSON API,不渲染模板
  • 前端通过 Vite 开发服务器代理请求到 Django
  • 生产环境由 Nginx 统一处理静态资源和 API 转发

JWT 认证替代 Session

  • 无状态认证,适合分布式部署
  • Token 通过 Authorization 请求头传递
  • 支持 Token 黑名单机制(Redis 存储)

软删除策略

  • 所有业务表包含 is_delete 字段
  • 删除操作仅标记 is_delete=True,不物理删除
  • 所有查询自动过滤 is_delete=False

代码生成器

  • 通过数据库表定义自动生成完整模块
  • 包含后端 Model/Form/Service/View/URL
  • 包含前端 Vue 页面和 API 模块
  • 自动注册菜单和权限节点

4.6 技术栈概览

类别技术选型版本
后端框架Django6.0.3
数据库MySQL8.0+
缓存Redis6.0+
认证JWT (PyJWT)-
前端框架Vue33.x
UI组件库ElementPlus-
构建工具Vite-
状态管理Pinia-

4.7 目录结构

DjangoAdmin_Django_EleVue/
+-- application/           # Django后端应用
|   +-- settings.py        # 项目配置
|   +-- urls.py            # 主路由
|   +-- models.py          # BaseModel定义
|   +-- <module>/          # 业务模块
+-- middleware/             # 中间件
|   +-- login_middleware.py # JWT认证
|   +-- permission_middleware.py # 权限控制
+-- utils/                  # 工具函数
|   +-- R.py               # 统一响应
|   +-- jwt.py             # JWT工具
|   +-- security.py        # 安全工具
+-- config/                 # 配置文件
|   +-- env.py             # 环境变量
+-- ui/                     # Vue前端
    +-- src/
        +-- views/         # 页面组件
        +-- api/           # API接口
        +-- components/    # 公共组件

4.8 扩展性设计

系统通过以下机制保证良好的扩展性:

  1. Django App 机制:每个模块独立为一个 Django App,可独立开发和部署
  2. 代码生成器:新模块通过数据库表定义自动生成,减少重复开发
  3. 模板定制:代码生成器使用 Jinja2 模板,可根据项目需求定制生成规则
  4. 中间件扩展:通过 Django 中间件机制可灵活添加请求/响应处理逻辑
  5. 权限节点:基于 sys:<module>:<action> 的权限标识,支持细粒度权限控制

小蚂蚁云团队 · 提供技术支持