内置中间件

1. django.middleware.gzip.GZipMiddleware:相应数据进行压缩。如果内容长度少于200个长度,那么就不会压缩。
在settings.py文件中配置MIDDLEWARE,添加:django.middleware.gzip.GZipMiddleware中间件,
之后,在浏览器中访问网页,查看Response Headers中的Content-Length与没有开启GZip中间件之前的Content-Length对比。就可以看出源代码在加载的时候确实是被压缩了。但是如果访问的网页的内容少于200个字符,就不会被压缩。
2.django.contrib.messages.middleware.MessageMiddleware:消息处理相关的中间件。
这个与我们之前涉及到的messages的上下文处理器非常相似,都是为了在多个模板中可以使用我们返回给模板的变量,并且简化操作。
3.django.contrib.auth.middleware.AuthenticationMiddleware:会给request添加一个user对象的中间件。
用户的授权中间件,该中间件必须在sessionmiddleware后面。
4.django.middleware.csrf.CsrfViewMiddleware:CSRF保护的中间件。
SessionMiddleware必须出现在CsrfMiddleware之前。
5.django.middleware.clickjacking.XFrameOptionsMiddleware:做了clickjacking攻击的保护。
clickjacking保护是攻击者在自己的病毒网站上,写一个诱惑用户点击的按钮,然后使用iframe的方式将受攻击的网站(比如银行的网站)加载到自己的网站上去,并将其设置为透明的,用户就看不到了,然后再把受攻击的网站(比如银行网站)的转账按钮定位到病毒网站的按钮上,这样用户在点击病毒网站上的按钮的时候,实际上点击的是受攻击的网站(比如银行的网站)上的按钮,从而实现了在不知不觉中给攻击者转账的功能。
该中间件的作用就是为http请求的response设置一个http的请求头,如果这个response中包含xframe_options_exempt=True,就不要再设置X-Frame-Options了。如果设置X-Frame-Options为SAMEORIGIN,这就意味着该response可以被本网站的加载为一个frame,而不能被其它网站的加载为一个frame。在你的项目的settings.py中开启这个中间件,就会在你的django项目中设置X-Frame-Options为DENY。
6.django.middleware.security.SecurityMiddleware:做了一些安全处理的中间件。比如设置XSS防御的请求头,比如做了http协议转为https协议的工作等。
7.django.contrib.sessions.middleware.SessionMiddleware:session中间件。会给request添加一个处理好的session对象。
8.缓存中间件:用来缓存一些页面
(1)django.middleware.cache.UpdateCacheMiddleware.
(2)django.middleware.cache.FetchFromCacheMiddleware

内置中间件防止的顺序:

1.SecurityMiddleware:应该放到最前面。因为这个中间件并不需要依赖任何其他的中间件。如果你的网站同时支持http协议和https协议,并且你想让用户在使用http协议的时候重定向到https协议,那么就没有必要让他执行下面的中间件再重定向,这样效率更高。
2.UpdateCacheMiddleware:应该在GZipMiddleware,SessionMiddleware,LocalMiddleware之前。
3.GZipMiddleware。
4.ConditionalMiddleware。
5.SessionMiddleware。
6.LocaleMiddleware。
7.CommonMiddleware。
8.CsrfViewMiddleware。
9.AuthenticationMiddleware。
10.MessageMiddleware。
11.FetchFromCacheMiddleware。
12.FloatpageFallbackMiddleware。
13.RedirectFallbackMiddleware。

各个中间件的路径

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.gzip.GZipMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware'
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
<!--以下两个中间件在settings文件中配置时,会出现:RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.-->
<!--'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',-->
<!--'django.contrib.redirects.middleware.RedirectFallbackMiddleware',-->
]

Django内置的中间件的更多相关文章

  1. Django内置Admin

    Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttyp ...

  2. 框架----Django内置Admin

    Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttyp ...

  3. Django内置Admin解析

    Django 内置的admin是对于model中对应的数据表进行增删改查提供的组建 一.Django admin的内部依赖: 依赖的app django.contrib.auth django.con ...

  4. Django内置分页

    一.django内置分页 from django.shortcuts import render from django.core.paginator import Paginator, EmptyP ...

  5. Django 内置分页器

    先导入Django内置的分页器 在商品列表页或者购物车列表页导入 在渲染list.html导入 然后在views后台渲染方法写入 打开list页面结果

  6. Django内置权限扩展案例

    当Django的内置权限无法满足需求的时候就自己扩展吧~ 背景介绍 overmind项目使用了Django内置的权限系统,Django内置权限系统基于model层做控制,新的model创建后会默认新建 ...

  7. Django内置模版过滤器

    Django内置过滤器总览 可以查询下表来总览Django的内置过滤器: 过滤器 说明 add 加法 addslashes 添加斜杠 capfirst 首字母大写 center 文本居中 cut 切除 ...

  8. Django内置模板标签

    Django内置标签总览 可以查询下表来总览Django的内置标签: 标签 说明 autoescape 自动转义开关 block 块引用 comment 注释 csrf_token CSRF令牌 cy ...

  9. Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档

    前言 基本环境 Django版本:1.11.8 Python版本:3.6 OS: win10 x64 本文摘要 提供了常用的Django内置过滤器的详细介绍,包括过滤器的功能.语法.代码和效果示例. ...

随机推荐

  1. 解决shiro自定义filter后,ajax登录无法登录,并且无法显示静态资源的问题

    这个问题困扰了我一天,看了下面两个文章,豁然开朗: https://www.cnblogs.com/gj1990/p/8057348.html https://412887952-qq-com.ite ...

  2. APP图标在线生成

    在线生成安卓APP图标生成 图标在线 在线图标 安卓图标 生成图标 https://icon.wuruihong.com/ 在线png图片压缩  png压缩 https://compresspng.c ...

  3. java.net.SocketTimeoutException: Read timed out 异常排查

    问题描述:使用RestTemplate调用接口出现该异常,相关调用代码: ResponseEntity<ResultVO> responseEntity; try { responseEn ...

  4. 进阶之路 | 奇妙的Activity之旅

    前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 本篇文章需要已经具备的知识: Activity的基本概念 AndroidManifest.xml的基本概念 学 ...

  5. 手动发布本地jar包到Nexus私服

    1.Nexus配置 1. 在Nexus私服上建立仓库,用于盛放jar包,如名叫3rd_part. 2. 注册用户Nuxus用户,如名叫dev,密码dev_123. 3. 给dev用户分配能访问3rd_ ...

  6. 复杂系统架构设计<1>

    这两天开始读由Edward Crawley(爱德华 克劳利).Bruce Cameron(布鲁斯 卡梅隆).Daniel Selva(丹尼尔 塞尔瓦)著作的系统架构,一开始看目录以为是介绍系统软件架构 ...

  7. R12客户表结构分析

    客户表/联系人/PARTY关联   HZ_PARTIES 客户账户表   HZ_CUST_ACCOUNTS 例子:    select hp.party_number --客户注册标识         ...

  8. 共同战“疫”,CODING 帮助研发团队高效协同

    新冠疫情下,家里蹲的日子继续延长.部分企业虽然受困于不能回公司办公,但都陆续开启了远程协作办公,远程协作领域被推上了风口.但「远程协同」看不见摸不着工作伙伴,个人的自律能力也无法保证,难免出现沟通响应 ...

  9. rpm | 升级软件包

    rpm | 升级软件包 检查已安装包 rpm -qa | grep samba samba-common-3.6.9-164.el6.x86_64 samba-3.6.9-164.el6.x86_64 ...

  10. 错误:EfficientDet网络出现"No boxes to NMS"并且mAP:0.0的解决方案

    近日,在使用谷歌新推出来的一个网络EfficientDet进行目标检测训练自己的数据集的时候,出现了如下错误: 其中项目开源地址是:https://github.com/toandaominh1997 ...