揭秘 Django 架构:面向初学者的指南
Source: Dev.to
1. Django 的核心模式:MVT != MVC
虽然大多数框架(如 Laravel、Rails,甚至 Flask 的扩展)遵循经典的 MVC(模型‑视图‑控制器)设计模式,Django 使用一种密切相关的方法,称为 MVT(模型‑视图‑模板)。
- Model – 定义数据库结构并处理数据交互。
- Template – 负责用户看到的内容(UI 渲染)。
- View – 处理业务逻辑,接收请求并返回响应。
Django 工作的简易流程:
User request → URL → View (logic) → Model (data) → Template (display UI) → Browser
这种分离帮助开发者保持代码整洁、可扩展——非常适合既有面向用户的功能又有后台管理的复杂应用。
2. 理解 Django 的多层文件夹系统
一个 Django 项目被组织为两类主要文件夹,各自承担不同的职责。
2.1 项目文件夹结构
当你运行:
django-admin startproject myproject
Django 会创建一个 外层文件夹(myproject/),作为项目根目录或工作区,同时在内部再创建一个 内层文件夹(myproject/),用于存放配置文件。
myproject/ # 项目根目录
│
├── myproject/ # 配置包
│ ├── __init__.py
│ ├── settings.py # 数据库、应用、middleware、模板等配置
│ ├── urls.py # 项目级 URL 路由
│ ├── wsgi.py / asgi.py # 服务器网关接口
│
├── manage.py # CLI 工具(迁移、runserver 等)
└── db.sqlite3 # 示例数据库
内层文件夹中的关键文件
settings.py– 配置的中心(数据库、已安装的应用、middleware、静态文件等)。urls.py– 项目级路由表;可以包含各应用的 URL 模式。wsgi.py/asgi.py– 部署项目到 Web 服务器的入口点。__init__.py– 标记该文件夹为 Python 包,以便导入。
可以把外层文件夹看作项目的 身体(所有内容所在),而内层文件夹则是 大脑(配置所在)。
2.2 应用文件夹结构
创建项目后,你可以添加应用来处理不同的功能:
python manage.py startapp myapp
Django 会生成以下结构:
myapp/
├── __init__.py # 标记文件夹为 Python 包
├── admin.py # 在 admin 站点注册模型
├── apps.py # 应用配置
├── models.py # 本应用的数据库模型
├── views.py # 本应用的业务逻辑 / 控制器
├── urls.py # 本应用的路由(可选)
├── migrations/ # 本应用的数据库迁移文件
└── templates/ # 本应用的可选 HTML 模板
这意味着
- 模块化 – 每个应用都是自包含的。
- 可复用 – 同一个应用可以插入多个项目中。
- 有序 – 每个应用拥有自己的模型、视图和模板。
例如,你可以在同一个项目中拥有 blog、shop、users 等多个应用。
2.3 项目与应用如何协同工作
项目(myproject/)保存全局设置和路由,而每个应用则包含自己的模型、视图、模板和业务逻辑。
# myproject/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls')), # 来自 'blog' 应用的路由
]
这种模块化设计让代码保持有序且易于扩展,尤其适用于大型项目。
2.4 关键要点
- 关注点分离:项目负责配置和全局路由;每个应用负责特定功能集合。
- 模型 管理数据,视图 处理业务逻辑,模板 负责呈现。
- 项目 + 应用的结构使得通过创建新应用即可轻松添加功能,而不会影响已有代码,从而提升可维护性和可扩展性。