155 lines
7.9 KiB
Markdown
155 lines
7.9 KiB
Markdown
# 项目目录结构
|
||
|
||
## 整体结构
|
||
|
||
```
|
||
├── application/ # Django 应用目录(所有业务模块)
|
||
│ ├── example/ # 示例模块(标准 CRUD 模板,可作为开发参考)
|
||
│ │ ├── models.py # 数据模型
|
||
│ │ ├── forms.py # 表单验证
|
||
│ │ ├── services.py # 业务逻辑
|
||
│ │ ├── views.py # 视图处理
|
||
│ │ ├── urls.py # 路由配置
|
||
│ │ └── apps.py # 应用配置
|
||
│ ├── user/ # 用户管理模块
|
||
│ ├── role/ # 角色管理模块
|
||
│ ├── role_menu/ # 角色菜单关联模块
|
||
│ ├── menu/ # 菜单管理模块
|
||
│ ├── dept/ # 部门管理模块
|
||
│ ├── level/ # 职级管理模块
|
||
│ ├── position/ # 岗位管理模块
|
||
│ ├── dict/ # 字典类型管理模块
|
||
│ ├── dict_item/ # 字典项管理模块
|
||
│ ├── config/ # 配置类型管理模块
|
||
│ ├── config_item/ # 配置项管理模块
|
||
│ ├── config_web/ # Web 配置模块
|
||
│ ├── param/ # 参数管理模块
|
||
│ ├── file_template/ # 文件模板模块
|
||
│ ├── article/ # 文章管理模块
|
||
│ ├── category/ # 分类管理模块
|
||
│ ├── notice/ # 公告管理模块
|
||
│ ├── link/ # 友情链接模块
|
||
│ ├── city/ # 城市管理模块
|
||
│ ├── job/ # 定时任务模块
|
||
│ ├── job_log/ # 任务日志模块
|
||
│ ├── login/ # 登录模块(登录、验证码)
|
||
│ ├── login_log/ # 登录日志模块
|
||
│ ├── operation_log/ # 操作日志模块
|
||
│ ├── upload/ # 文件上传模块
|
||
│ ├── index/ # 首页模块(菜单、用户信息)
|
||
│ ├── generator/ # 代码生成器 Web 端
|
||
│ ├── models.py # BaseModel 抽象基类
|
||
│ ├── settings.py # Django 项目配置
|
||
│ ├── urls.py # 主路由配置(注册所有模块路由)
|
||
│ └── wsgi.py # WSGI 入口
|
||
├── config/ # 配置目录
|
||
│ └── env.py # 环境变量配置(数据库、Redis 等)
|
||
├── middleware/ # 中间件目录
|
||
│ ├── login_middleware.py # JWT 登录认证装饰器
|
||
│ └── permission_middleware.py # 权限控制混入类
|
||
├── utils/ # 工具类目录
|
||
│ ├── R.py # 统一响应工具(R.ok / R.failed)
|
||
│ ├── jwt.py # JWT 生成和解析工具
|
||
│ ├── common.py # 通用工具函数
|
||
│ ├── regular.py # 表单错误信息提取
|
||
│ └── security.py # 安全工具(获取用户 ID、用户名)
|
||
├── constant/ # 常量定义目录
|
||
│ └── constants.py # 全局常量(PAGE_SIZE、MESSAGE_OK 等)
|
||
├── extends/ # 扩展模块
|
||
│ └── extends_dotenv.py # .env 文件加载
|
||
├── ui/ # 前端 Vue 项目
|
||
│ ├── src/
|
||
│ │ ├── api/ # API 接口层
|
||
│ │ │ ├── tool/ # 业务 API 模块
|
||
│ │ │ └── sys/ # 系统 API 模块
|
||
│ │ ├── views/ # 页面视图
|
||
│ │ │ ├── tool/ # 业务页面
|
||
│ │ │ ├── sys/ # 系统管理页面
|
||
│ │ │ └── dashboard/ # 仪表盘
|
||
│ │ ├── components/ # 公共组件
|
||
│ │ │ ├── BasicTable/ # 表格组件
|
||
│ │ │ ├── BasicForm/ # 表单组件
|
||
│ │ │ └── PageWrapper/ # 页面容器
|
||
│ │ ├── router/ # 路由配置
|
||
│ │ │ ├── router-guards.ts # 路由守卫
|
||
│ │ │ └── generator-routers.ts # 动态路由生成
|
||
│ │ ├── store/ # Pinia 状态管理
|
||
│ │ │ └── modules/
|
||
│ │ │ ├── asyncRoute.ts # 动态路由状态
|
||
│ │ │ └── user.ts # 用户状态
|
||
│ │ ├── utils/ # 前端工具
|
||
│ │ │ └── http/axios/ # Axios HTTP 封装
|
||
│ │ └── directives/ # 自定义指令(v-perm 权限指令)
|
||
│ ├── .env.development # 开发环境配置(API 代理)
|
||
│ ├── .env.production # 生产环境配置
|
||
│ ├── package.json # 前端依赖配置
|
||
│ └── vite.config.ts # Vite 构建配置
|
||
├── public/ # 公共资源目录
|
||
│ ├── templates/ # Jinja2 代码生成模板
|
||
│ ├── static/ # 静态文件
|
||
│ └── uploads/ # 上传文件存储
|
||
├── generator.py # 代码生成器 CLI 入口
|
||
├── generator_config.py # 代码生成引擎(CodeGenerator 类)
|
||
├── manage.py # Django 管理脚本
|
||
├── requirements.txt # Python 依赖(UTF-16LE 编码)
|
||
├── config.json # 代码生成器配置示例
|
||
└── .env # 环境变量文件(数据库、Redis 连接信息)
|
||
```
|
||
|
||
## 后端模块内部结构
|
||
|
||
每个业务模块(如 `application/example/`)遵循统一的文件结构:
|
||
|
||
```
|
||
application/<module>/
|
||
├── __init__.py # 包初始化文件
|
||
├── apps.py # 应用配置(AppConfig)
|
||
├── models.py # 数据模型定义
|
||
├── forms.py # 表单验证类
|
||
├── services.py # 业务逻辑函数
|
||
├── views.py # 视图类(HTTP 请求处理)
|
||
├── urls.py # 模块内路由配置
|
||
├── admin.py # Django Admin 配置
|
||
└── migrations/ # 数据库迁移文件
|
||
└── __init__.py
|
||
```
|
||
|
||
### 各文件职责
|
||
|
||
| 文件 | 职责 | 示例 |
|
||
|------|------|------|
|
||
| `models.py` | 定义数据库模型,继承 `BaseModel` | `class Example(BaseModel): name = models.CharField(...)` |
|
||
| `forms.py` | 定义表单验证规则,继承 `ModelForm` | `class ExampleForm(forms.ModelForm): name = forms.CharField(required=True)` |
|
||
| `services.py` | 实现所有业务逻辑 | `get_example_page()`, `add_example()`, `update_example()` |
|
||
| `views.py` | 处理 HTTP 请求,调用 services,返回响应 | `class ExamplePageView(PermissionRequired, View)` |
|
||
| `urls.py` | 配置模块内 URL 映射 | `path('page', views.ExamplePageView.as_view())` |
|
||
|
||
## 前端模块结构
|
||
|
||
一个生成的 CRUD 页面通常包含以下文件:
|
||
|
||
```
|
||
ui/src/views/<domain>/<entity>/
|
||
├── index.vue # 列表页(搜索表单 + 数据表格 + 操作按钮)
|
||
├── edit.vue # 编辑弹窗(新增/编辑表单)
|
||
├── detail.vue # 详情弹窗(只读展示)
|
||
└── components/ # 模块内私有组件(可选)
|
||
```
|
||
|
||
对应的 API 模块:
|
||
|
||
```
|
||
ui/src/api/<domain>/<entity>.ts # CRUD 接口封装
|
||
```
|
||
|
||
## 关键配置文件
|
||
|
||
| 文件 | 作用 |
|
||
|------|------|
|
||
| `.env` | 数据库连接、Redis 连接、应用名称等环境变量 |
|
||
| `config/env.py` | 读取 `.env` 并导出配置变量,所有模块通过 `from config.env import ...` 使用 |
|
||
| `application/settings.py` | Django 配置(INSTALLED_APPS、中间件、数据库、缓存等) |
|
||
| `application/urls.py` | 主路由配置,通过 `include()` 注册所有模块路由 |
|
||
| `ui/.env.development` | 前端开发环境配置(Vite 代理 `/api` 到后端) |
|
||
| `ui/package.json` | 前端依赖和脚本命令 |
|