Files
djangoadmin-wiki/DjangoAdmin_Django_AntdVue/zh/volume3/directory.md
T
2026-09-13 18:12:07 +08:00

236 lines
8.4 KiB
Markdown

# 第四章 架构设计 - 目录结构设计
## 4.1 项目根目录
```
DjangoAdmin_Django_AntdVue/
|
+-- application/ # Django后端应用主目录
+-- middleware/ # 自定义中间件
+-- utils/ # 工具函数库
+-- config/ # 配置文件目录
+-- constant/ # 常量定义
+-- extends/ # 扩展功能
+-- public/ # 公共资源
| +-- static/ # 静态文件
| +-- templates/ # 代码生成模板
| +-- uploads/ # 上传文件存储
+-- data/ # 数据文件
+-- ui/ # Vue前端项目
+-- manage.py # Django管理脚本
+-- generator.py # 代码生成器CLI
+-- config.json # 代码生成配置
+-- requirements.txt # Python依赖
+-- .env # 环境变量配置
+-- CLAUDE.md # Claude Code指导文件
```
## 4.2 后端应用目录 (application/)
```
application/
|
+-- __init__.py # 包初始化
+-- settings.py # Django项目配置
+-- urls.py # 主路由配置
+-- models.py # BaseModel抽象基类
+-- constants.py # 项目常量定义
+-- asgi.py # ASGI入口
+-- wsgi.py # WSGI入口
|
+-- login/ # 登录模块
+-- index/ # 首页模块
+-- user/ # 用户管理模块
+-- role/ # 角色管理模块
+-- menu/ # 菜单管理模块
+-- dept/ # 部门管理模块
+-- dict/ # 字典管理模块
+-- config/ # 配置管理模块
+-- job/ # 定时任务模块
+-- article/ # 文章管理模块
+-- example/ # 案例模块(参考示例)
+-- generator/ # 代码生成器模块
+-- operation_log/ # 操作日志模块
+-- login_log/ # 登录日志模块
+-- upload/ # 文件上传模块
+-- ... # 其他业务模块
```
## 4.3 标准模块目录结构
每个业务模块遵循统一的文件结构:
```
application/<module>/
|
+-- __init__.py # 包初始化文件
+-- apps.py # Django应用配置
+-- models.py # 数据模型定义
+-- forms.py # 表单验证类
+-- services.py # 业务逻辑函数
+-- views.py # 视图处理类
+-- urls.py # URL路由配置
+-- admin.py # Admin后台注册
+-- constants.py # 模块常量(可选)
+-- migrations/ # 数据库迁移文件
+-- __init__.py
+-- 0001_initial.py
```
### 文件职责说明
| 文件 | 职责 | 典型内容 |
|------|------|----------|
| `models.py` | 数据模型定义 | 继承 BaseModel,定义业务字段 |
| `forms.py` | 表单验证 | ModelForm 子类,字段验证规则 |
| `services.py` | 业务逻辑 | CRUD 操作,分页查询,数据处理 |
| `views.py` | 视图处理 | 类视图,装饰器,权限检查 |
| `urls.py` | 路由配置 | path() 映射,URL 到视图的绑定 |
| `apps.py` | 应用配置 | AppConfig 子类,应用名称 |
| `admin.py` | Admin注册 | 模型在 Django Admin 的注册 |
## 4.4 中间件目录 (middleware/)
```
middleware/
|
+-- __init__.py # 包初始化
+-- login_middleware.py # JWT登录认证装饰器
+-- permission_middleware.py # 权限控制混入类
```
### 中间件文件说明
| 文件 | 功能 | 核心类/函数 |
|------|------|-------------|
| `login_middleware.py` | JWT认证 | `check_login` 装饰器 |
| `permission_middleware.py` | RBAC权限 | `PermissionRequired` 混入类 |
## 4.5 工具函数目录 (utils/)
```
utils/
|
+-- __init__.py # 包初始化
+-- R.py # 统一响应格式
+-- jwt.py # JWT令牌处理
+-- security.py # 用户安全工具
+-- common.py # 通用工具函数
+-- regular.py # 正则验证工具
+-- password.py # 密码处理工具
+-- file.py # 文件处理工具
+-- ip_location.py # IP地理位置查询
+-- ip2region.py # IP数据库查询
+-- ip2region.xdb # IP数据库文件
```
### 工具文件说明
| 文件 | 功能 | 核心函数 |
|------|------|----------|
| `R.py` | 统一响应 | `R.ok()`, `R.failed()`, `R.response()` |
| `jwt.py` | JWT处理 | `create_token()`, `parse_payload()`, `refresh_token()` |
| `security.py` | 用户信息 | `get_user_id()`, `get_username()` |
| `common.py` | 通用工具 | `parse_request_body()`, `format_datetime()`, `get_file_url()` |
| `regular.py` | 表单验证 | `get_err()` |
| `password.py` | 密码处理 | `hash_password()`, `verify_password()` |
## 4.6 配置目录 (config/)
```
config/
|
+-- __init__.py # 包初始化
+-- env.py # 环境变量配置
```
### 配置项说明
`config/env.py` 定义了所有可配置的环境变量:
```python
# 应用配置
DJANGO_NAME = os.getenv('DJANGO_NAME', 'Django+AntDesign旗舰版')
DJANGO_VERSION = os.getenv('DJANGO_VERSION', 'v3.0.0')
DJANGO_DEBUG = (os.getenv('DJANGO_DEBUG', 'True') == 'True')
DJANGO_DEMO = (os.getenv('DJANGO_DEMO', 'True') == 'True')
# 数据库配置
DATABASE_ENGINE = os.getenv('DATABASE_ENGINE', "django.db.backends.mysql")
DATABASE_NAME = os.getenv('DATABASE_NAME', 'djangoadmin.django.antdvue')
DATABASE_HOST = os.getenv('DATABASE_HOST', "127.0.0.1")
DATABASE_PORT = os.getenv('DATABASE_PORT', 3306)
DATABASE_PREFIX = os.getenv('DATABASE_PREFIX', "django_")
# Redis配置
REDIS_HOST = os.getenv('REDIS_HOST', '127.0.0.1')
REDIS_PORT = int(os.getenv('REDIS_PORT', 6379))
REDIS_PASSWORD = os.getenv('REDIS_PASSWORD', '123456')
REDIS_DB = int(os.getenv('REDIS_DB', 0))
# IP地理位置配置
IP_LOCATION_SOURCE = os.environ.get('IP_LOCATION_SOURCE', 'api')
IP_CACHE_ENABLED = os.environ.get('IP_CACHE_ENABLED', 'True') == 'True'
IP_CACHE_TIMEOUT = int(os.environ.get('IP_CACHE_TIMEOUT', 86400))
```
## 4.7 前端目录 (ui/)
```
ui/
|
+-- public/ # 静态资源
+-- src/
| +-- api/ # API接口定义
| | +-- tool/ # 业务API模块
| | +-- example.ts # 案例API
| | +-- user.ts # 用户API
| |
| +-- views/ # 页面组件
| | +-- tool/ # 业务页面
| | +-- example/ # 案例页面
| | | +-- index.vue # 列表页
| | | +-- edit.vue # 编辑页
| | | +-- detail.vue # 详情页
| |
| +-- components/ # 公共组件
| | +-- BasicTable/ # 表格组件
| | +-- BasicForm/ # 表单组件
| | +-- PageWrapper/ # 页面容器
| |
| +-- router/ # 路由配置
| +-- store/ # Pinia状态管理
| +-- utils/ # 工具函数
| +-- layouts/ # 布局组件
|
+-- .env.development # 开发环境配置
+-- .env.production # 生产环境配置
+-- package.json # 依赖配置
+-- vite.config.ts # Vite配置
+-- tsconfig.json # TypeScript配置
```
## 4.8 公共资源目录 (public/)
```
public/
|
+-- static/ # 静态文件
+-- templates/ # 代码生成模板
| +-- models.py.tpl # 模型模板
| +-- forms.py.tpl # 表单模板
| +-- services.py.tpl # 服务模板
| +-- views.py.tpl # 视图模板
| +-- urls.py.tpl # 路由模板
| +-- ui/
| +-- index.vue.tpl # 列表页模板
| +-- edit.vue.tpl # 编辑页模板
| +-- detail.vue.tpl # 详情页模板
| +-- api.ts.tpl # API模块模板
|
+-- uploads/ # 上传文件存储
+-- example/ # 按模块分类存储
+-- avatar/ # 头像文件
+-- temp/ # 临时文件
```