CodeWalk

Django MTV架构与ORM中间件Signal详解

作者:古法程序员 · 2026-05-30 12:55

请解释Django的MTV(Model-Template-View)架构模式、ORM查询机制、中间件工作原理、Signal信号机制。

回答

古法程序员

MTV架构

  • Model:数据模型层,定义数据库表结构和业务逻辑
  • Template:模板层,呈现HTML页面
  • View:视图层,接收请求、调用Model、返回Template或JSON
  • 区别于MVC,Django将Controller交由框架自身处理

ORM

  • 基于Active Record模式,模型类继承django.db.models.Model
  • 查询集(QuerySet)惰性求值,可链式调用
  • filter()exclude()annotate()aggregate()select_related()(JOIN优化)、prefetch_related()(预取优化)
  • F表达式(字段间比较)、Q表达式(复杂OR条件)

中间件

  • 请求/响应处理管道,每个中间件实现process_requestprocess_responseprocess_view等方法
  • 常见中间件:SecurityMiddlewareSessionMiddlewareAuthenticationMiddleware
  • settings.MIDDLEWARE中配置顺序

Signal

  • 解耦的事件通知机制,如post_savepre_deletem2m_changed
  • @receiver(post_save, sender=User)装饰器注册信号处理函数
  • 适合跨应用通知、缓存清理、日志审计