5.5 KiB
5.5 KiB
代码生成器
代码生成器是项目的重要工具,可以根据数据库表结构一键生成前后端 CRUD 代码,包括模型、仓库、服务、路由、表单、前端 API、前端页面等全套代码。
功能概述
代码生成器支持以下功能:
- 表结构解析:自动解析数据库表结构,提取字段信息
- 代码生成:根据模板生成前后端 CRUD 代码
- 自定义配置:支持配置生成选项,如模块名、作者、日期等
- 模板扩展:支持自定义模板,满足个性化需求
使用方式
CLI 命令行使用
# 生成指定表的代码
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 管理界面
登录管理后台,进入「系统工具 → 代码生成」页面:
- 选择要生成代码的表
- 配置生成选项(模块名、作者、日期等)
- 点击「生成」按钮
- 下载生成的代码文件
生成内容
代码生成器会生成以下文件:
后端文件
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:
# 代码生成配置
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 类型 |
|---|---|---|---|
INT |
int |
IntegerField |
number |
VARCHAR |
str |
StringField |
string |
TEXT |
str |
TextAreaField |
string |
DATETIME |
datetime |
DateTimeField |
string |
DECIMAL |
Decimal |
DecimalField |
number |
TINYINT |
int |
IntegerField |
number |
实战案例
生成岗位管理模块
# 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 测试生成的接口
自定义模板
如果需要自定义生成的代码风格,可以修改模板文件:
# 编辑模型模板
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
注意事项
:::warning 重要提示
- 表名必须有前缀:表名必须以
DB_PREFIX(默认flask_)开头 - 主键必须是 id:代码生成器假设主键字段名为
id - 软删除字段:代码生成器会自动添加
is_delete字段的过滤 - 生成后需要手动注册:生成的路由需要手动添加到
BLUEPRINTS列表 - 菜单需要手动添加:生成的权限节点需要手动添加到菜单管理 :::
总结
代码生成器是项目开发的重要工具,可以根据数据库表结构一键生成前后端 CRUD 代码。支持 CLI 命令行和 Web 管理界面两种使用方式,支持自定义模板和配置。生成的代码遵循项目的分层架构和编码规范,可以直接使用或根据需要进行修改。