• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共43篇

    python3.X - Web - Django3.2.9

关闭

返回栏目

关闭

返回python3.X - Web - Django3.2.9栏目

11 - 文件详解 - settings.py - 中间件MIDDLEWARE

作者:

贺及楼

成为作者

更新日期:2021-12-15 16:11:08

Django中间件MIDDLEWARE
  1. MIDDLEWARE=(
  2. # 默认中间件
  3. 'blueapps.middleware.request_provider.RequestProvider',
  4. 'django.contrib.sessions.middleware.SessionMiddleware',
  5. 'corsheaders.middleware.CorsMiddleware',
  6. 'django.middleware.common.CommonMiddleware',
  7. 'django.middleware.csrf.CsrfViewMiddleware',
  8. 'django.contrib.auth.middleware.AuthenticationMiddleware',
  9. 'django.contrib.messages.middleware.MessageMiddleware',
  10. # 跨域检测中间件, 默认关闭
  11. # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
  12. 'django.middleware.security.SecurityMiddleware',
  13. 'blueapps.core.exceptions.middleware.AppExceptionMiddleware',
  14. # django国际化中间件
  15. 'django.middleware.locale.LocaleMiddleware',
  16. )
中间件名称 中文 作用
Cache 缓存中间件
Common 通用中间件
GZip 内容压缩中间件 用于减小响应体积,降低带宽压力,提高传输速度。
Conditional GET 有条件的GET访问中间件
Locale 本地化中间件 用于处理国际化和本地化,语言翻译。
Message 消息中间件 基于cookie或者会话的消息功能
security 安全中间件
Session 会话中间件
Site 站点框架
Authentication 认证框架 提供用户认证服务
CSRF protection CSRF防御机制
自定义中间件

Cache 缓存中间件

如果启用了该中间件,
Django会以CACHE_MIDDLEWARE_SECONDS 配置的参数进行全站级别的缓存。

Common 通用中间件

该中间件为我们提供了一些便利的功能:

  • 禁止DISALLOWED_USER_AGENTS中的用户代理访问服务器
  • 自动为URL添加斜杠后缀和www前缀功能。如果配置项 APPEND_SLASH 为True ,并且访问的URL 没有斜杠后缀,在URLconf中没有匹配成功,将自动添加斜杠,然后再次匹配,如果匹配成功,就跳转到对应的url。 PREPEND_WWW 的功能类似。
  • 为非流式响应设置Content-Length头部信息。

GZip 内容压缩中间件

用于减小响应体积,降低带宽压力,提高传输速度。

该中间件必须位于其它所有需要读写响应体内容的中间件之前。

如果存在下面情况之一,将不会压缩响应内容:

内容少于200 bytes
已经设置了 Content-Encoding 头部属性
请求的 Accept-Encoding 头部属性未包含 gzip.
可以使用 gzip_page() 装饰器,为视图单独开启GZip压缩服务。

Conditional GET 有条件的GET访问中间件

很少使用。

Locale 本地化中间件

用于处理国际化和本地化,语言翻译。

Message 消息中间件

基于cookie或者会话的消息功能,比较常用。

Security 安全中间件

django.middleware.security.SecurityMiddleware中间件为我们提供了一系列的网站安全保护功能。
主要包括下列所示,可以单独开启或关闭:

  • SECURE_BROWSER_XSS_FILTER
  • SECURE_HSTS_INCLUDE_SUBDOMAINS
  • SECURE_CONTENT_TYPE_NOSNIFF
  • SECURE_HSTS_PRELOAD
  • SECURE_HSTS_SECONDS
  • SECURE_REDIRECT_EXEMPT
  • SECURE_SSL_HOST
  • SECURE_SSL_REDIRECT

Session 会话中间件

非常常用。

Site 站点框架

这是一个很有用,但又被忽视的功能。

它可以让你的Django具备多站点支持的功能。

通过增加一个site属性,区分当前request请求访问的对应站点。

无需多个IP或域名,无需开启多个服务器,只需要一个site属性,就能搞定多站点服务。

Authentication 认证框架

Django最主要的中间件之一,提供用户认证服务。

CSRF protection CSRF防御机制

提供CSRF防御机制的中间件 X-Frame-Options

点击劫持防御中间件

自定义中间件

有时候,为了实现一些特定的需求,我们可能需要编写自己的中间件。

在编写方式上,需要注意的是,当前Django版本2.2,存在两种编写的方式。
一种是Django当前官网上提供的例子,
一种是老版本的方式。
本质上,两种方式其实是一样的。