147 lines
4.4 KiB
Markdown
147 lines
4.4 KiB
Markdown
:::tip 本章概要
|
||
代码生成器使用过程中常见问题的原因分析和解决方案。
|
||
:::
|
||
|
||
# 常见问题
|
||
|
||
## 生成后前端页面不显示
|
||
|
||
**排查步骤**:
|
||
|
||
1. **确认菜单已创建**:检查数据库 `django_menu` 表中是否有对应路径的记录
|
||
2. **确认路由组件路径**:菜单的 `component` 字段应为 `/tool/example/index`
|
||
3. **确认权限已分配**:当前用户需要有对应菜单的访问权限(超级管理员 ID=1 自动拥有所有权限)
|
||
4. **清除缓存**:退出重新登录,或清除浏览器缓存
|
||
5. **确认后端已重启**:新路由需要重启后端服务才能生效
|
||
|
||
## 如何重新生成?
|
||
|
||
完整清理流程:
|
||
|
||
```bash
|
||
# 1. 删除后端模块
|
||
rm -rf application/example
|
||
|
||
# 2. 清理 application/urls.py 中的路由配置
|
||
# 删除 path('example/', include('application.example.urls')),
|
||
|
||
# 3. 清理 application/settings.py 中的应用注册
|
||
# 删除 'application.example',
|
||
|
||
# 4. 删除前端文件
|
||
rm -rf ui/src/views/tool/example
|
||
rm ui/src/api/tool/example.ts
|
||
|
||
# 5. 删除数据库菜单
|
||
# DELETE FROM django_menu WHERE path = '/tool/example';
|
||
|
||
# 6. 重新生成
|
||
python generator.py django_example
|
||
```
|
||
|
||
## 批量生成有数量限制吗?
|
||
|
||
Web API 批量生成最多支持 50 个表。CLI 无限制,但建议逐表生成,便于排查问题。
|
||
|
||
## 树状列表是如何判断的?
|
||
|
||
当表中存在 `parent_id` 或 `pid` 字段时,自动切换为树状模板(`ui2/`),生成树形结构的增删改查页面。
|
||
|
||
树状列表与普通分页列表的区别:
|
||
|
||
| 维度 | 普通列表(ui/) | 树状列表(ui2/) |
|
||
|:----|:----|:----|
|
||
| 触发条件 | 无 parent_id/pid | 有 parent_id/pid |
|
||
| 模板数量 | 5 个组件 + 1 个 API | 4 个组件 + 1 个 API |
|
||
| 数据加载 | 分页请求 | 全量加载 + 前端 buildTree |
|
||
| 展开/折叠 | 无 | 支持 |
|
||
|
||
## CLI 报错 "No module named 'application'"
|
||
|
||
**原因**:未在项目根目录执行命令。
|
||
|
||
**解决**:确保在项目根目录(包含 `manage.py` 和 `generator.py` 的目录)执行:
|
||
|
||
```bash
|
||
cd /data/apps/DjangoAdmin_Django_NaiveVue
|
||
python generator.py django_example
|
||
```
|
||
|
||
## CLI 报错 "Django环境初始化失败"
|
||
|
||
**原因**:Django 环境未正确配置。
|
||
|
||
**解决**:
|
||
1. 确保已激活虚拟环境
|
||
2. 确保已安装所有依赖:`pip install -r requirements.txt`
|
||
3. 确保 `application/settings.py` 文件存在
|
||
4. 确保 MySQL 和 Redis 服务正常运行
|
||
|
||
## 生成的代码有语法错误
|
||
|
||
**可能原因**:
|
||
- 表名或字段名包含特殊字符
|
||
- 字段注释包含未转义的引号
|
||
- 数据库连接异常导致解析不完整
|
||
|
||
**解决**:
|
||
1. 使用 `--dry-run` 检查解析结果
|
||
2. 导出配置文件检查字段内容:`python generator.py django_example --dry-run --output config.json`
|
||
3. 手动修正配置文件后用 `--config` 重新生成
|
||
|
||
## 如何自定义生成的代码风格?
|
||
|
||
修改 `public/templates/` 下的模板文件。模板使用 Jinja2 语法,详见 [6.6 自定义模板](/zh/volume5/templates)。
|
||
|
||
修改模板后重新生成即可生效,不影响已有模块。
|
||
|
||
## 生成速度慢
|
||
|
||
**可能原因**:
|
||
- 数据库连接延迟高
|
||
- 表字段数量非常多(50+ 字段)
|
||
- 同时生成大量表(批量生成)
|
||
|
||
**解决**:
|
||
- 检查数据库网络连接
|
||
- 减少单次批量生成的表数量
|
||
- 使用 CLI 单表生成替代批量生成
|
||
|
||
## 生成器支持哪些数据库?
|
||
|
||
:::warning 数据库限制
|
||
代码生成器通过查询 MySQL 的 `information_schema` 获取表结构信息,**仅支持 MySQL 数据库**。
|
||
:::
|
||
|
||
## 模板语法错误如何排查?
|
||
|
||
**症状**:生成时报错 `jinja2.exceptions.TemplateSyntaxError`。
|
||
|
||
**排查步骤**:
|
||
1. 查看错误信息中的模板文件名和行号
|
||
2. 打开对应的 `.tpl` 文件检查语法
|
||
3. 常见错误:
|
||
- `{% if %}` 缺少 `{% endif %}`
|
||
- 变量名拼写错误(如 `f.nmae` 应为 `f.name`)
|
||
- 使用了未定义的变量
|
||
4. 修改模板后重新生成
|
||
|
||
## 字段识别不准确
|
||
|
||
**可能原因**:
|
||
- 字段注释格式不符合解析规则
|
||
- 字段名不在自动识别的关键词列表中
|
||
|
||
**解决**:
|
||
1. 导出配置文件:`python generator.py django_example --dry-run --output config.json`
|
||
2. 手动修改配置文件中的字段属性
|
||
3. 用配置文件重新生成:`python generator.py --config config.json`
|
||
|
||
## 总结
|
||
|
||
大部分问题可通过以下流程解决:
|
||
1. 使用 `--dry-run` 预览配置
|
||
2. 清理旧文件后重新生成
|
||
3. 确认数据库菜单和权限配置正确
|
||
4. 重启后端服务
|