揭秘 Django 架构:面向初学者的指南

发布: (2025年12月13日 GMT+8 02:41)
5 min read
原文: Dev.to

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 模板

这意味着

  • 模块化 – 每个应用都是自包含的。
  • 可复用 – 同一个应用可以插入多个项目中。
  • 有序 – 每个应用拥有自己的模型、视图和模板。

例如,你可以在同一个项目中拥有 blogshopusers 等多个应用。

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 关键要点

  • 关注点分离:项目负责配置和全局路由;每个应用负责特定功能集合。
  • 模型 管理数据,视图 处理业务逻辑,模板 负责呈现。
  • 项目 + 应用的结构使得通过创建新应用即可轻松添加功能,而不会影响已有代码,从而提升可维护性和可扩展性。
Back to Blog

相关文章

阅读更多 »

Django:6.0 有哪些新特性

2025-12-03 !https://adamj.eu/tech/assets/2025-12-03-django-mosaic.webp Django 6.0 已于今日发布 https://www.djangoproject.com/weblog/2025/dec/03/django-60-r...