ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 中间件 * 是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出 * 激活:添加到django配置文件中的MIDDLEWARE\_CLASSES元祖中 * 每个中间件组件是一个独立的python类,可以定义下面方法中的一个或多个 * \_\__int_\_\_:无序任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件 * process\_request\(request\):执行视图之前被调用,每个请求上调用,返回None或HttpResponse对象 * process\_\_view\(request,view\_func,view\_args,views\_kwargs\):调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象 * process\__template\_response\(request,response\):_在视图刚好执行完毕之后被调用,在每个请求上调用,返回实现了render方法的响应对象 * process\_response\(request,response\):所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象 * process\_exception\(request,respone,exception\):当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象 * 使用中间件,可以干扰整个处理过程,每次请求中都会执行中间件的这个方法 * 示例:获取参数 * 与settings.py同级目录下创建 ```text from django.http import HttpResponse from django.utils.deprecation import MiddlewareMixin class myMiddle(MiddlewareMixin): def process_exception(self,request,response,exception): return HttpResponse(exception.message) def process_request(self,request): print('get参数为',request.GET.get('a')) ``` * 将类myMiddle注册到settings.py文件中 ```text 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', 'middleware.myApp.myMiddle.MyMiddle', ] ``` * 执行视图之前被调用,每个请求上调用,会返回一个参数值或None