
MIDDLEWARE=(# 默认中间件'blueapps.middleware.request_provider.RequestProvider','django.contrib.sessions.middleware.SessionMiddleware','corsheaders.middleware.CorsMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware',# 跨域检测中间件, 默认关闭# 'django.middleware.clickjacking.XFrameOptionsMiddleware','django.middleware.security.SecurityMiddleware','blueapps.core.exceptions.middleware.AppExceptionMiddleware',# django国际化中间件'django.middleware.locale.LocaleMiddleware',)
| 中间件名称 | 中文 | 作用 |
|---|---|---|
| Cache | 缓存中间件 | |
| Common | 通用中间件 | |
| GZip | 内容压缩中间件 | 用于减小响应体积,降低带宽压力,提高传输速度。 |
| Conditional GET | 有条件的GET访问中间件 | |
| Locale | 本地化中间件 | 用于处理国际化和本地化,语言翻译。 |
| Message | 消息中间件 | 基于cookie或者会话的消息功能 |
| security | 安全中间件 | |
| Session | 会话中间件 | |
| Site | 站点框架 | |
| Authentication | 认证框架 | 提供用户认证服务 |
| CSRF protection | CSRF防御机制 | |
| 自定义中间件 |
如果启用了该中间件,
Django会以CACHE_MIDDLEWARE_SECONDS 配置的参数进行全站级别的缓存。
该中间件为我们提供了一些便利的功能:
用于减小响应体积,降低带宽压力,提高传输速度。
该中间件必须位于其它所有需要读写响应体内容的中间件之前。
如果存在下面情况之一,将不会压缩响应内容:
内容少于200 bytes
已经设置了 Content-Encoding 头部属性
请求的 Accept-Encoding 头部属性未包含 gzip.
可以使用 gzip_page() 装饰器,为视图单独开启GZip压缩服务。
很少使用。
用于处理国际化和本地化,语言翻译。
基于cookie或者会话的消息功能,比较常用。
django.middleware.security.SecurityMiddleware中间件为我们提供了一系列的网站安全保护功能。
主要包括下列所示,可以单独开启或关闭:
非常常用。
这是一个很有用,但又被忽视的功能。
它可以让你的Django具备多站点支持的功能。
通过增加一个site属性,区分当前request请求访问的对应站点。
无需多个IP或域名,无需开启多个服务器,只需要一个site属性,就能搞定多站点服务。
Django最主要的中间件之一,提供用户认证服务。
提供CSRF防御机制的中间件 X-Frame-Options
点击劫持防御中间件
有时候,为了实现一些特定的需求,我们可能需要编写自己的中间件。
在编写方式上,需要注意的是,当前Django版本2.2,存在两种编写的方式。
一种是Django当前官网上提供的例子,
一种是老版本的方式。
本质上,两种方式其实是一样的。