中间件
中间件事在request和response处理过程中的一个插件。
比如在request到达试图函数之前,可以使用中间件来做一些相关的事情。比如可以在判断用户有没有登录,如果登陆了,就绑定一个user对象到request上,也可以在response到达浏览器之前,做一些相关的处理,可以在resopnse设置一些cookie信息等。
django内置中间件放置顺序
在settings.py中有内置的中间件信息, 有些中间件是建立项目时,django自带的, 有些中间件需要去手动添加, 但是手动添加的中间放置的位置是有讲究的
1.SecurityMiddleware
2.UpdateCacheMiddleware
3.GZipMiddleware
4.ConditionalGetMiddleware
5.SessionMiddleware
6.LocaleMiddleware
7.CommonMiddleware
8.CsrfViewMiddleware
9.AuthenticationMiddleware
10.MessageMiddleware
11.FetchFromCacheMiddleware
12.FlatpageFallbackMiddleware
13.RedirectFallbackMidlleware
14.XFrameOptionsMiddleware
内置中间件的功能
- django.middleware.common.
CommonMiddleware
使用CommonMiddleware中间件时, 如果是访问浏览器末尾不加’/‘会自动重定向,就是自动加一个’/’
可以反爬虫, 判断User-Agent
在settings.py文件中添加如下代码, 可以限制User-Agent的访问, 下列代码是限制空白和js - 缓存中间件, 用来缓存一些页面的
django.middleware.cache.UpdateCacheMiddleware
django.middleware.cache.FetchFromCacheMiddleware
- 将响应的数据进行压缩, 如果数据大于200字节就会进行压缩
django.middleware.gzip.GzipMiddleware
- 消息中间件
django.contrib.messages.middleware.MessageMiddleware
- 安全处理的中间件
django.middleware.security.SecurityMiddleware
- session中间件, 给request对象添加一个session的属性记录的session的数据信息
django.contrib.sessions.middleware.SessionMiddleware
- 给request对象一个user对象的中间件
django.contrib.auth.middleware.AuthenticationMiddleware
- csrf保护的中间件
django.middleware.csrf.CsrfViewMiddleware
- clickjacking攻击的保护,
django.middleware.clickjacking.XFrameOptionsMiddleware