Skip to content

代码生成器 ​

代码生成器是项目的重要工具,可以根据数据库表结构一键生成前后端 CRUD 代码,包括模型、仓库、服务、路由、表单、前端 API、前端页面等全套代码。

功能概述 ​

代码生成器支持以下功能:

  1. 表结构解析:自动解析数据库表结构,提取字段信息
  2. 代码生成:根据模板生成前后端 CRUD 代码
  3. 自定义配置:支持配置生成选项,如模块名、作者、日期等
  4. 模板扩展:支持自定义模板,满足个性化需求

使用方式 ​

CLI 命令行使用 ​

bash
# 生成指定表的代码
python src/modules/generator/generate.py --table=flask_position

# 生成多个表的代码
python src/modules/generator/generate.py --table=flask_position,flask_level

# 生成所有表的代码
python src/modules/generator/generate.py --all

Web 管理界面 ​

登录管理后台,进入「系统工具 → 代码生成」页面:

  1. 选择要生成代码的表
  2. 配置生成选项(模块名、作者、日期等)
  3. 点击「生成」按钮
  4. 下载生成的代码文件

生成内容 ​

代码生成器会生成以下文件:

后端文件 ​

src/modules/{group}/{name}/
├── __init__.py          # 模块初始化
├── models.py            # 数据模型
├── repository.py        # 数据仓库
├── service.py           # 业务服务
├── router.py            # 路由定义
└── schema.py            # 表单验证

前端文件 ​

ui/src/api/{group}/{name}/
└── index.ts             # API 接口

ui/src/views/{group}/{name}/
├── index.vue            # 列表页面
├── components/          # 组件目录
│   ├── AddModal.vue     # 新增弹窗
│   ├── EditModal.vue    # 编辑弹窗
│   └── DetailModal.vue  # 详情弹窗
└── index.ts             # 页面配置

配置文件 ​

代码生成器的配置文件位于 src/modules/generator/config.py:

python
# 代码生成配置
GENERATOR_CONFIG = {
    # 作者名称
    'author': 'DjangoAdmin',
    # 日期格式
    'date_format': '%Y-%m-%d %H:%M:%S',
    # 是否覆盖已有文件
    'overwrite': False,
    # 模板目录
    'template_dir': 'src/modules/generator/templates',
    # 输出目录
    'output_dir': 'src/modules',
}

模板系统 ​

代码生成器使用 Jinja2 模板引擎,模板文件位于 src/modules/generator/templates/ 目录:

templates/
├── backend/
│   ├── models.py.j2          # 模型模板
│   ├── repository.py.j2      # 仓库模板
│   ├── service.py.j2         # 服务模板
│   ├── router.py.j2          # 路由模板
│   └── schema.py.j2          # 表单模板
└── frontend/
    ├── api.ts.j2             # API 模板
    ├── index.vue.j2          # 列表页面模板
    ├── AddModal.vue.j2       # 新增弹窗模板
    ├── EditModal.vue.j2      # 编辑弹窗模板
    └── DetailModal.vue.j2    # 详情弹窗模板

模板变量 ​

模板中可用的变量:

变量说明示例
table_name表名flask_position
table_comment表注释岗位表
module_name模块名position
class_name类名Position
columns字段列表[{name, type, comment, ...}]
author作者DjangoAdmin
date生成日期2026-09-08 12:00:00

字段类型映射 ​

数据库类型Python 类型WTForms 类型Vue 类型
INTintIntegerFieldnumber
VARCHARstrStringFieldstring
TEXTstrTextAreaFieldstring
DATETIMEdatetimeDateTimeFieldstring
DECIMALDecimalDecimalFieldnumber
TINYINTintIntegerFieldnumber

实战案例 ​

生成岗位管理模块 ​

bash
# 1. 生成代码
python src/modules/generator/generate.py --table=flask_position

# 2. 查看生成的文件
ls -la src/modules/system/position/

# 3. 注册路由
# 编辑 src/routes/v1.py,添加 position_blue 到 BLUEPRINTS 列表

# 4. 添加菜单和权限节点
# 登录管理后台,进入「系统管理 → 菜单管理」添加菜单和权限节点

# 5. 测试接口
# 使用 curl 或 Postman 测试生成的接口

自定义模板 ​

如果需要自定义生成的代码风格,可以修改模板文件:

bash
# 编辑模型模板
vim src/modules/generator/templates/backend/models.py.j2

# 编辑服务模板
vim src/modules/generator/templates/backend/service.py.j2

# 编辑前端页面模板
vim src/modules/generator/templates/frontend/index.vue.j2

注意事项 ​

重要提示

  1. 表名必须有前缀:表名必须以 DB_PREFIX(默认 flask_)开头
  2. 主键必须是 id:代码生成器假设主键字段名为 id
  3. 软删除字段:代码生成器会自动添加 is_delete 字段的过滤
  4. 生成后需要手动注册:生成的路由需要手动添加到 BLUEPRINTS 列表
  5. 菜单需要手动添加:生成的权限节点需要手动添加到菜单管理

总结 ​

代码生成器是项目开发的重要工具,可以根据数据库表结构一键生成前后端 CRUD 代码。支持 CLI 命令行和 Web 管理界面两种使用方式,支持自定义模板和配置。生成的代码遵循项目的分层架构和编码规范,可以直接使用或根据需要进行修改。

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