django自带7个中间件,支持自定义
在使用django开发项目的时候如果涉及到全局相关功能都可以使用中间件
1.用户身份校验
2.权限校验
3.访问频率校验
请求来的时候和走的时候都需要经过中间件
django支持自定义并且暴露5个可以自定义的方法:
掌握:
1.process_request
2.process_response
了解:
1.process_view
2.process_template_response
3.process_exception
自定义中间件
1.在项目或应用下创建一个文件夹
2.文件夹内创建一个py文件
3.书写代码,且必须继承MiddlewareMixin
4.settings内配置路径才能生效
from django.utils.deprecation import MiddlewareMixin
class Mymiddleware(MiddlewareMixin):
def process_request(self,request):
pass
def process_response(self,request,response):
return response
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',
'app01.mymiddleware.mymd.Mymiddleware',#配置的路径
]
process_request
请求来到时候会经过django中间件中的每一个该方法
执行顺序:配置文件中的顺序
如果返回了HttpResponse对象,则请求原路返回,不再继续往后
用来做全局相关的限制功能
process_response
执行顺序和process_request相反
如果在一个中间件中的process_request中直接返回了HttpResponse,则执行当前中间件下的process_response后直接返回