企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
#### 简介 ``` 面向切面编程(IoC), 为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性,其它的MVC框架也有这个功能 ``` #### 中间件方法 ``` Django在中间件中预置了六个方法,这六个方法的区别在于不同的阶段执行,对输入或输出进行干预 ``` 1.初始化:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件 ``` def __init__(): pass ``` 2.处理请求前:在每个请求上调用,返回None或HttpResponse对象 ``` def process_request(request): pass ``` 3.处理视图前:在每个请求上调用,返回None或HttpResponse对象 ``` def process_view(request, view_func, view_args, view_kwargs): pass ``` 4.处理模板响应前:在每个请求上调用,返回实现了render方法的响应对象 ``` def process_template_response(request, response): pass ``` 5.处理响应后:所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象 ``` def process_response(request, response): pass ``` 6.异常处理:当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象 ``` def process_exception(request,exception): pass ``` #### 自定义中间件 中间件是一个独立的`python类`,可以定义这六个方法中的一个或多个 ``` class TestMiddleware(object): def __init__(self): print('--------------init') def process_request(self, request): print('--------------request') def process_view(self, request, view_func, view_args, view_kwargs): print('--------------view') def process_template_response(self, request, response): print('--------------template') return response def process_response(self, request, response): print('--------------response') return response ``` settings.py ``` MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'Book.middleware.TestMiddleware',# 增加自定义中间件 ) ``` 注: 如果多个中间件中注册了相同的方法,则先注册的后执行