中间件;
中间件是一个轻量级的底层的插件,可以介入Django的请求和响应过程(面向切面编程),其本质就是一个python类
面向切面编程(Aspect Oriented Programming)简称AOP,AOP的主要实现目的时针对业务处理过程中的切面进行提取,他所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分低耦合的隔离效果
调用顺序
中间件注册的时候是一个列表
如果我们没有在切点处直接进行返回,中间件会依次执行
如果我们直接进行了返回,后续中间件就不再执行了
–可切入点
| process_request | client——urls |
| process_view | urls——views |
| process_templates_response | views—…—templates |
| process_response | templates——client |
–切入函数
| __init__ | 没有参数,服务器响应第一个请求的时候自动调用,用户确定是否启用该中间件 |
| process_request(self, request) | 在执行视图前被调用,每个请求上都会调用,不主动进行返回或返回HttpResponse对象 |
| process_view(self,request, view_func, view_args, view_kwargs) | 调用视图之前执行,每个请求都会调用,不主动进行返回或返回HttpResponse对象 |
| process_templates_response(self, request, response) | 在视图刚好执行完后进行调用,每个请求都会调用,不主动进行返回或返回HttpResponse对象 |
| process_response(self, request, response) | 所有响应返回浏览器之前调用,每个请求都会调用,不主动进行返回或返回HttpResponse对象 |
| process_exception(self, request, exception) | 视图抛出异常时调用,不主动进行返回或返回HttpResponse对象 |
自定义中间件流程
-
在工程目录下创建middleware目录
-
目录中创建一个python文件
-
在python文件中导入中间件的基类
from django.utils.deprecation import MiddlewareMixin" -
在类中根据功能需求,创建切入需求类,重写切入点方法
class LearnAOP(MiddlewareMixin): def process_request(self, request): print('request的路径', requeest.GET.path)" -
启用中间件,在settings中进行配置,MIDDLEWARE中添加middleware.文件名.类名
本文介绍了Django框架中的中间件机制,它是一个轻量级的底层插件,用于介入请求和响应过程,实现面向切面编程。同时,文章探讨了AOP的概念及其在减少逻辑部分耦合中的作用。并详细说明了Django中间件的调用顺序、如何定义切入点及创建自定义中间件的步骤,包括在settings中启用中间件的配置方法。

393

被折叠的 条评论
为什么被折叠?



