Files
djangoadmin-wiki/DjangoAdmin_Flask_NaiveVue/zh/volume4/tools/generator.md
T
2026-09-12 23:12:15 +08:00

5.5 KiB
Raw Blame History

代码生成器

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

功能概述

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

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

使用方式

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 管理界面

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

  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:

# 代码生成配置
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 重要提示

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

总结

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