Django MTV架构与ORM中间件Signal详解
请解释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_request、process_response、process_view等方法 - 常见中间件:
SecurityMiddleware、SessionMiddleware、AuthenticationMiddleware - 在
settings.MIDDLEWARE中配置顺序
Signal:
- 解耦的事件通知机制,如
post_save、pre_delete、m2m_changed @receiver(post_save, sender=User)装饰器注册信号处理函数- 适合跨应用通知、缓存清理、日志审计