咨询Django标准项目结构:官方规范的目录架构究竟是什么?
Django 标准项目结构
Django 没有绝对的"标准"结构,但官方默认生成的结构是基础框架,实际项目中会根据规模和需求扩展出更实用的结构,以下是两种常见的结构:
一、官方默认生成的基础结构
通过django-admin startproject myproject命令生成的初始结构:
myproject/ ├── myproject/ │ ├── __init__.py │ ├── asgi.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── manage.py └── db.sqlite3
各文件/目录的作用:
- 根目录
myproject/:项目的容器,名称可自定义 - 核心配置目录
myproject/myproject/:__init__.py:声明该目录为Python包settings.py:项目全局配置文件,包含数据库、中间件、应用注册等核心配置urls.py:项目主路由入口,负责分发请求到各个应用的路由asgi.py/wsgi.py:分别是ASGI、WSGI服务器的适配入口,用于项目部署
manage.py:Django命令行工具,执行迁移、启动开发服务器、创建超级用户等操作都依赖它db.sqlite3:默认的SQLite数据库文件,生产环境通常会替换为MySQL、PostgreSQL等数据库
二、实际开发常用的扩展结构
随着项目规模扩大,默认结构会显得单薄,以下是业内常用的扩展结构:
myproject/ ├── myproject/ │ ├── __init__.py │ ├── asgi.py │ ├── settings/ │ │ ├── __init__.py │ │ ├── base.py # 通用基础配置,如安装的应用、中间件、静态资源路径 │ │ ├── dev.py # 开发环境配置,如调试模式、本地数据库、日志级别 │ │ └── prod.py # 生产环境配置,如关闭调试、生产数据库、静态资源CDN │ ├── urls.py │ ├── wsgi.py │ └── middleware/ # 存放自定义中间件 ├── apps/ # 统一管理所有业务应用 │ ├── __init__.py │ ├── user/ # 用户模块应用 │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations/ # 数据库迁移文件目录 │ │ ├── models.py # 数据模型定义 │ │ ├── tests.py # 单元测试文件 │ │ ├── urls.py # 应用内部路由 │ │ └── views.py # 视图逻辑 │ └── blog/ # 博客模块应用(结构同user) │ ├── ... ├── static/ # 全局静态资源(CSS、JS、图片等) │ ├── css/ │ ├── js/ │ └── img/ ├── templates/ # 全局模板文件 │ ├── base.html # 基础模板,其他模板继承该文件实现布局复用 │ └── includes/ # 可复用的模板片段,如导航栏、页脚 ├── media/ # 用户上传的媒体文件存储目录 ├── requirements/ # 分环境的依赖清单 │ ├── base.txt # 通用依赖,如Django、数据库驱动 │ ├── dev.txt # 开发环境依赖,如调试工具、测试框架 │ └── prod.txt # 生产环境依赖,如性能优化插件 ├── manage.py └── .env # 环境变量文件,存放数据库密码、密钥等敏感信息(不提交到版本库)
这种扩展结构的优势:
- 拆分配置文件,避免单个
settings.py过于臃肿,方便不同环境切换 - 用
apps/统一管理业务模块,结构清晰,便于团队协作 - 全局静态资源和模板集中存放,减少重复配置
- 分环境管理依赖,避免开发与生产环境的依赖冲突
- 敏感信息存入
.env,提升项目安全性
内容的提问来源于stack exchange,提问作者Mhmdnzr
相关产品推荐
相关产品推荐

