当然。阅读 Django 项目前,先掌握这些概念就够用了:

核心概念

  • Django:Python 的 Web 框架,主打“自带电池”(ORM、后台管理、认证、路由等均内置)。
  • 项目(project):整个服务的配置容器,通常包含 settings.py、根路由 urls.pywsgi.py / asgi.py
  • 应用(app):按业务拆分的模块,如用户、订单、资产;通常含 models.pyviews.pyurls.pyadmin.py
  • MVT 模式Model 管数据,View 处理请求和业务,Template 渲染页面;API 项目通常直接返回 JSON,不一定有模板。

请求链路

HTTP 请求
  → 根 urls.py
  → 应用 urls.py
  → view(函数或类)
  → serializer / service / model
  → 数据库
  → HTTP / JSON 响应

看接口代码时,通常从路由入手,追到 View,再看它调用的序列化器、业务逻辑与模型。

关键文件

  • settings.py:应用注册、数据库、缓存、中间件、认证、环境配置。
  • urls.py:URL 与视图的映射,例如 path("users/", ...)
  • views.py:请求入口;函数视图用 def,类视图常继承 Django 或 DRF 的基类。
  • models.py:数据库表的 Python 定义。一个 models.Model 子类通常对应一张表。
  • migrations/:数据库结构变更记录;修改模型后生成并执行迁移。
  • admin.py:Django 管理后台中注册和配置模型。
  • manage.py:项目命令入口,如 runservermigrateshell

ORM(数据库操作)
Django 用 ORM 将 Python 对象映射为数据库记录:

User.objects.get(id=1)                 # 查询一条
User.objects.filter(is_active=True)    # 查询集合
User.objects.create(username="alice")  # 新增
user.save()                            # 更新
user.delete()                          # 删除

常见字段关系:

  • ForeignKey:多对一,例如多个订单属于一个用户。
  • OneToOneField:一对一,例如用户与扩展资料。
  • ManyToManyField:多对多,例如用户与角色。

配置与启动

  • INSTALLED_APPS:启用哪些 Django 应用。
  • MIDDLEWARE:请求/响应必经的处理链,如认证、CORS、异常处理。
  • DATABASES:数据库连接信息。
  • DEBUG:开发环境通常为 True,生产必须关闭。
  • python manage.py migrate:应用数据库迁移。
  • python manage.py runserver:本地启动开发服务。

若项目使用 Django REST Framework(DRF)
后端 API 项目很常见:

  • Serializer:负责模型对象与 JSON 之间的转换及参数校验。
  • APIView / ViewSet:处理 HTTP 方法或一组资源操作。
  • router:自动为 ViewSet 生成 REST 路由。
  • permission_classes:定义接口权限。
  • authentication_classes:定义认证机制,例如 Token/JWT。
  • Response:返回 JSON 响应。

一个典型 API 的阅读顺序:

urls.py / router
  → ViewSet 或 APIView
  → Serializer(入参校验、出参格式)
  → Model / Service(持久化与业务规则)
  → Permission / Authentication(权限与身份)

最值得优先关注的坑

  • Django 的 QuerySet 是惰性执行的:真正遍历、切片或序列化时才可能查库。
  • 关联字段访问可能带来 N+1 查询;注意 select_related()prefetch_related()
  • 区分 request.GET(查询参数)、request.POST(表单)和 API 中的 request.data(DRF JSON 请求体)。
  • 数据库结构以 migration 为准,不只看当前 models.py
  • 配置可能从环境变量、.env 或按环境拆分的 settings 文件读取。