Django-中间件middleware-启用-执行-自定义

本文介绍了Django中间件的启用、执行顺序,包括内置中间件的建议排列,以及如何自定义中间件。Django中间件在请求阶段按照配置顺序执行,提供安全性、缓存等功能。文章还给出了IP拦截和DEBUG页面处理的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何启用中间件

将其添加到 Django 配置文件settings.py的 MIDDLEWARE 配置项列表中。
Django中可以不使用任何中间件,如果你愿意的话,MIDDLEWARE 配置项可以为空。但是强烈建议至少使用 CommonMiddleware,最好是保持默认的配置,这有助于你提高网站的安全性。

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

中间件的执行顺序

在请求阶段,调用视图之前,Django 按照定义的顺序执行中间件 MIDDLEWARE,自顶向下。

Django内置的中间件

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

Common:通用中间件
禁止DISALLOWED_USER_AGENTS中的用户代理访问服务器
自动为URL添加斜杠后缀和www前缀功能。如果配置项 APPEND_SLASH 为True ,并且访问的URL 没有斜杠后缀,在URLconf中没有匹配成功,将自动添加斜杠,然后再次匹配,如果匹配成功,就跳转到对应的url。 PREPEND_WWW 的功能类似,为url添加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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值