# 代码生成器 代码生成器是项目的重要工具,可以根据数据库表结构一键生成前后端 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 类型 | |:-----------|:------------|:-------------|:---------| | `INT` | `int` | `IntegerField` | `number` | | `VARCHAR` | `str` | `StringField` | `string` | | `TEXT` | `str` | `TextAreaField` | `string` | | `DATETIME` | `datetime` | `DateTimeField` | `string` | | `DECIMAL` | `Decimal` | `DecimalField` | `number` | | `TINYINT` | `int` | `IntegerField` | `number` | ## 实战案例 ### 生成岗位管理模块 ```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 ``` ## 注意事项 :::warning 重要提示 1. **表名必须有前缀**:表名必须以 `DB_PREFIX`(默认 `flask_`)开头 2. **主键必须是 id**:代码生成器假设主键字段名为 `id` 3. **软删除字段**:代码生成器会自动添加 `is_delete` 字段的过滤 4. **生成后需要手动注册**:生成的路由需要手动添加到 `BLUEPRINTS` 列表 5. **菜单需要手动添加**:生成的权限节点需要手动添加到菜单管理 ::: ## 总结 代码生成器是项目开发的重要工具,可以根据数据库表结构一键生成前后端 CRUD 代码。支持 CLI 命令行和 Web 管理界面两种使用方式,支持自定义模板和配置。生成的代码遵循项目的分层架构和编码规范,可以直接使用或根据需要进行修改。