本节摘要:Django 是 Python 最主流的 Web 框架,以"全栈、电池齐全"著称。本节讲清它的定位、核心特性(自带后台、ORM、认证)、以及"为什么要学它"。
阅读完本节,你应当能够:
"Python 写后端,为什么首选 Django?"——因为它"什么都有":后台管理、数据库 ORM、用户认证、表单处理……别的框架要装一堆第三方库,Django 自带。像买了一套"全配家具",拆箱即用。
Django 的定位一句话:
| 特性 | 说明 |
|---|---|
| 自带后台 | 管理界面开箱即用 |
| ORM | 数据库操作对象化 |
| 认证 | 用户系统内置 |
| 模板 | 页面渲染 |
| 维度 | Spring Boot | Django |
|---|---|---|
| 语言 | Java | Python |
| 配置 | 注解驱动 | 约定 + 文件 |
| 后台 | 需集成 | 自带 |
| 风格 | 企业重 | 全栈快 |
💡 关键直觉:两者都是"全家桶",风格不同——Spring Boot 企业级重,Django 全栈快。选型看团队语言与项目定位。
| 场景 | 适合 |
|---|---|
| 内容型网站 | 非常适合(自带后台) |
| 管理后台 | 非常适合 |
| 快速原型 | 非常适合 |
| 高并发极致 | 需调优 |
⚠️ 常见误区:以为 Django 只能做"页面网站"。用 Django REST Framework 同样能做纯 API——全栈框架不等于不能只做后端。
认识它了,下一节搭环境——环境搭建与项目初始化。
在深入细节前,先看一个 Django 应用的"最小骨架",体会"全栈框架"的写法。下面这段代码展示了:定义一个模型(对应数据库表)、在视图中查询、返回 JSON 数据。注意它不需要手写 SQL,也不需要单独配置数据库连接之外的任何东西。
# models.py 定义数据模型 from django.db import models class User(models.Model): name = models.CharField(max_length=50) age = models.IntegerField() # views.py 视图里使用模型 from django.http import JsonResponse def user_list(request): users = User.objects.all() data = [{"id": u.id, "name": u.name} for u in users] return JsonResponse(data, safe=False)
这个例子体现了 Django 的核心气质:模型类即表结构,对象操作即数据操作,视图函数即请求处理。你不用纠结"类怎么映射到表、查询怎么变成 SQL",框架全都包办了。后面几节会把这些环节逐个展开。
Q1:Django"电池齐全"到底指什么?
指框架自带一套完整的功能组件:管理后台、数据库 ORM、用户认证、表单处理、模板引擎、中间件、静态文件管理、国际化支持等。别的框架这些功能要靠第三方库拼装,Django 全部内置且经过整合验证。对中小项目来说,装一个 Django 就等于配齐了一套工具箱,不用再满世界找零件。
Q2:Django 适合做什么类型的项目?
它的强项是内容型网站、管理后台、内部系统、原型快速的业务应用——因为自带后台让你管理数据几乎零成本,ORM 让数据操作高效,模板引擎让页面开发直接。如果项目是高并发、极低延迟的纯 API 服务,Django 也能做(配合 Django REST Framework),但需要更多调优,这时可以评估 Node.js 或 Go 这类更轻的选择。
Q3:Django 和 Flask 怎么选?
Django 是"全家桶"(内置后台、ORM、认证),Flask 是"轻量核心"(只提供最基础的 Web 能力,其他靠扩展)。想快速做完整应用、团队要规范统一,选 Django;想要极致灵活、项目小而自定义程度高,选 Flask。本书选择 Django,因为它最能代表 Python 全栈开发的主流形态,学完后你完全有能力去理解和对比 Flask。
Q4:为什么说 Django 是全栈框架?
因为它的能力覆盖了"从数据库到页面"的完整链条:Model 管数据、View 管逻辑、Template 管页面渲染,还自带后台和用户系统。一个 Django 团队可以从建表做到页面展示,不用引入第二个框架。这种"一个人或小团队也能撑起整个产品"的能力,是它被个人开发者和创业团队青睐的原因。
动手建议:不必急着搭环境,先在本节基础上做一步"纸面设计":设想一个"博客系统",在纸上列出用户、文章、评论三张表分别有哪些字段,想想它们之间的关联(一篇文章对应一个作者、一篇评论对应一篇文章)。然后再去读后面几节,你会发现模型定义、ORM 查询这些概念,就是在把你的设计用代码表达出来。先有设计,再学工具,效率会高很多。