Files
djangoadmin-wiki/DjangoAdmin_Django_EleVue/zh/struct.md
T
2026-09-13 17:33:13 +08:00

155 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 项目目录结构
## 整体结构
```
├── 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` | 前端依赖和脚本命令 |