django中间件
首先django自带7个中间件,每个中间件都有各自对应的功能
并且django还支持程序员自定义中间件
在用django开发项目的时候,只要涉及到全局相关的功能都可以使用中间件方便的完成
- 全局用户身份校验
- 全局用户权限校验
- 全局访问频率校验
django中间件是django的门户
1. 请求来的时候需要先经过中间件才能够到达真正的django后端
2. 响应走的时候最后也需要经过中间件才能发送出去
django请求声明周期流程图
研究django中间件代码规律
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支持自定义中间件并且暴露5个可以自定义的方法
1. 必须要掌握
process_request
process_response
2. 了解即可
process_view
process_template_response
process_exception
如何自定义中间件
1. 在项目名或者应用名下创建一个任意名称的文件夹
2. 在该文件夹内创建一个任意名称的py文件
3. 在该py文件内需要书写类(这个类必须继承MiddleMixin)
然后在这个类里面就可以自定义5个方法了
(这5个方法并不是全部都需要书写,用几个写几个)
4. 需要将类的路径以字符串的形式注册到配置文件中才能生效
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', '自己写的中间件的路径', '自己写的中间件的路径', ]
1. 必须要掌握
process_request
1. 请求来的时候需要经过每一个中间件里面的process_request方法
经过的顺序是按照配置文件中注册的中间件从上往下的顺序依次执行
2. 如果中间件里面没有定义该方法,那么直接跳过执行下一个中间件
3. 如果该方法返回了HttpResponse对象,那么请求将不再继续往后执行