You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 06:18:21