Django 是 Python 中最成熟的 Web 框架之一,内置 ORM、模板引擎、权限系统、后台管理等完整功能,非常适合构建中大型 Web 应用。
刚创建 Django 项目时,新手最疑惑的问题之一就是: "这些文件夹到底是干什么的?"
本篇内容将带你彻底理解 Django 的项目结构,掌握一个 Django 项目应该如何组织与运行。
一、创建 Django 项目
假设您已经安装 Django:
bash
pip install django
创建项目:
bash
django-admin startproject mysite
结构如下:
markdown
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
二、项目根目录结构讲解
下面是 Django 项目默认目录的解释。
1. manage.py ------ 项目管理命令入口
你在开发中最常用的命令几乎都从这里运行:
bash
python manage.py runserver
python manage.py migrate
python manage.py createsuperuser
python manage.py startapp app1
作用:
- 提供 Django 命令行工具入口
- 自动配置 Django 环境变量
2. 项目主目录(与项目同名)
第二层的 mysite/ 才是真正的项目配置目录,这里包含项目级别的配置文件。
结构如下:
markdown
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
让我们逐个介绍:
2.1 settings.py ------ 项目核心配置文件
settings.py 是 Django 项目的"大脑",里面包含所有全局配置,例如:
- INSTALLED_APPS(安装的组件)
- DATABASES(数据库配置)
- MIDDLEWARE(中间件)
- TEMPLATES(模板设置)
- STATICFILES(静态文件路径)
- DEBUG 开关
你修改最多的文件就是这个。
2.2 urls.py ------ 项目 URL 路由入口
定义网站的页面路径,决定某个 URL 应该交给哪个 app 来处理。
示例:
python
from django.urls import path, include
urlpatterns = [
path('', include('app1.urls')),
path('admin/', admin.site.urls),
]
建议:每个 App 单独一个 urls.py,通过 include 引入。
2.3 wsgi.py ------ 部署 WSGI 服务器使用
用于部署 Python Web 服务(如 gunicorn、uWSGI)。
生产环境访问 Django 就是通过它。
2.4 asgi.py ------ 异步部署入口
ASGI(异步网关接口),支持:
- WebSocket
- 异步视图
新版 Django 项目默认提供,非常重要。
三、Django 应用 app 的结构
你创建一个新的 app:
bash
python manage.py startapp blog
会生成如下结构:
markdown
blog/
migrations/
__init__.py
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
下面逐个解释:
1. models.py ------ 数据模型(ORM)
用于定义数据库表结构。
示例:
python
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
2. views.py ------ 视图层(业务逻辑)
处理请求、返回响应。
python
from django.http import HttpResponse
def home(request):
return HttpResponse("Hello Django")
3. urls.py(需要手动创建)------ app 路由
推荐为每个 app 添加一个 urls.py:
python
from django.urls import path
from . import views
urlpatterns = [
path('', views.home),
]
在主项目中 include:
python
path('blog/', include('blog.urls'))
4. admin.py ------ Django 后台管理配置
让数据模型可以在后台被管理:
python
from django.contrib import admin
from .models import Article
admin.site.register(Article)
后台地址:
bash
/admin/
5. apps.py ------ app 的配置信息
一般无需修改。
6. migrations/ ------ 数据表迁移记录
执行:
bash
python manage.py makemigrations
python manage.py migrate
所有数据库结构变更都会以脚本保存在这里。
7. tests.py ------ 单元测试
用于写自动化测试。
四、推荐的 Django 项目结构(企业常用)
随着项目变大,官方默认结构不够用,可以采用如下结构:
markdown
mysite/
manage.py
mysite/
settings/
__init__.py
base.py
dev.py
prod.py
urls.py
asgi.py
wsgi.py
apps/
blog/
users/
orders/
templates/
static/
media/
优点:
- 按模块拆分 app,清晰可维护
- 配置文件按环境拆分
- 静态与模板集中管理
五、一个完整 Django 项目运行流程
- 浏览器访问 URL
urls.py路由分配- 对应
views.py执行业务逻辑 - 操作
models.py(数据库层) - 返回模板或 JSON 响应
- 若有后台需求,通过
admin.py管理数据
六、总结
本篇你学会了:
✔ Django 项目默认结构与功能
✔ manage.py 的作用
✔ settings / urls / wsgi / asgi 的职责
✔ Django app 各文件的用途
✔ 企业级 Django 项目最佳结构
理解这些结构后,你就可以真正开始写 Django Web 应用,后续内容如模型、视图、模板、ORM 查询等都会更容易理解。