内置中间件

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. STM32,ARM,Keil工具相关

    One ELF Section per Function https://blog.csdn.net/iceiilin/article/details/6091575 因此,可以得出,选项One EL ...

  2. java开发规范学习

    from 慕课网-明明如月-<阿里巴巴的Java开发手册> Integer缓存问题分析 1, Integer缓存[-128, 127]的数字,除此之外,将通过new创建. Long也是缓存 ...

  3. C#的多线程简洁笔记

    New Thread(()=>{}).Start(); //匿名线程 Thread Ntd = new Thread(T1); Ntd.IsBackground = true; //后台线程 N ...

  4. Javascript 基础学习(七)常用内置对象

    Array 定义 数组也是一个对象,是一个用来存储数据的对象.和Object类似,但是它的存储效率比普通对象要高.数组中保存的内容我们称为元素.数组使用索引(index)来操作元素.索引指由0开始的整 ...

  5. cesium1.65api版本贴地贴模型标绘工具效果(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  6. Edge Chromium 中如何始终允许运行 Flash 内容

    众所周知,由于 Adobe Flash 控件历史久远,积累了许多漏洞.早在2017年7月,Adobe就宣布了要在2020年底终止对 Flash 的支持.微软称其浏览器移除 Flash 插件的最后期限是 ...

  7. 安装NodeJs和NPM到Ubuntu(APT)

    运行环境 系统版本:Ubuntu 16.04.2 LTS 软件版本:node-v10.16.3.npm-6.9.0 硬件要求:无 安装过程 1.安装NPM和NodeJs root@localhost: ...

  8. Spark应用开发调优要点总结

    调试Spark应用性能的时候,首先应该理解spark是如何工作以及你的spark应用需要何种类型的资源.比如说,机器学习相关的spark应用更依赖cpu计算能力,ETL应用更依赖I/O能力,以此进行有 ...

  9. webpack打包进行丑化压缩遇到(TypeError Cannot read property 'compilation' of undefined)问题

    今天再重新配置老项目node打包环境的时候遇到了一个问题. 在打包的时候报: TypeError: Cannot read property 'compilation' of undefined 错误 ...

  10. jQuery---表格删除案例

    表格删除案例 on的简单事件 //1. 找到清空按钮,注册点击事件,清空tbody $("#btn").on("click", function () { $( ...