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当前官网上提供的例子,
一种是老版本的方式。
本质上,两种方式其实是一样的。