django.middleware.security.SecurityMiddleware
安全中间件, 为请求/响应周期提供了一些安全性增强。
django.contrib.sessions.middleware.SessionMiddleware
回话中间件,可以基于每个站点访问者存储和检索任意数据,它在服务器端存储数据。
django.middleware.common.CommonMiddleware
通用中间件
会处理一些URL, 比如;baidu.com会自动处理成www.baidu.com, 比如 /wyc/blog 会自动处理成 /wyc/blog/
django.middleware.csrf.CsrfViewMiddleware
跨站请求伪造,通过向POST表单添加隐藏的表单字段并检查请求的正确值来增强对跨站请求伪造的保护。
django.contrib.auth.middleware.AuthenticationMiddleware
验证中间件,将user代表当前登录用户的属性添加到每个传HttpResponse对象。
django.contrib.messages.middleware.MessageMiddleware
消息中间件,启用于cookie和会话的消息支持
django.middleware.clickjacking.XFrameOptionsMiddleware
点击劫持保护
当恶意站点诱使用户单击他们已加载到隐藏框架或iframe中的另一个站点的隐藏元素时,会发生这种类型的攻击
django.middleware.cache.UpdateCacheMiddleware
django.middleware.cache.FetchFromCacheMiddleware
开启全站缓存范围缓存,如果开启了这些缓存,任何一个由Django提供的页面将会被缓存,缓存时长可以在CACHE_MIDDLEWARE_SECONDS中配置定义。
整体运行流程:
1、用户通过浏览器请求一个页面 2、请求到达Request Midddlwraes中间件对request做一些预处理或直接response请求
3、 URLConf通过urls.py文件和请求的URL找到相应的View
4、 View Middleware被访问它同样可以对request做一些处理或者直接返回response
5、 调用Views中的函数
6、views中的方法可以选择性的通过manager完成的
7、所有的Model -> to -> DB的交互都是通过Models访问底层的数据
8、如果需要,Views可以使用一个特殊的Context
9、Context被传给Template用来生成页面