Skip to content

第四章 架构设计 - 目录结构设计

4.1 项目根目录

DjangoAdmin_Django_EleVue/
|
+-- 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.pyAdmin注册模型在 Django Admin 的注册

4.4 中间件目录 (middleware/)

middleware/
|
+-- __init__.py                  # 包初始化
+-- login_middleware.py          # JWT登录认证装饰器
+-- permission_middleware.py     # 权限控制混入类

中间件文件说明

文件功能核心类/函数
login_middleware.pyJWT认证check_login 装饰器
permission_middleware.pyRBAC权限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.pyJWT处理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+EleVue旗舰版')
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.elevue')
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/                    # 临时文件

小蚂蚁云团队 · 提供技术支持