01.初识中间件
1.1 什么是中间件
-
Django中间件是修改 Django request 或者 response 对象的钩子
-
可以理解为是介于 HttpRequest 与 HttpResponse 处理之间的一道处理过程。
-
Django中间件作用:
- 修改请求,即传送到 view 中的 HttpRequest 对象。
- 修改响应,即 view 返回的 HttpResponse 对象。
1.2 中间件处理过程
-
1、首先客户端发起请求,会将请求交给settings.py中排在最前面的中间件
-
2、前面中间件收到请求会调用类中的process_request方法处理,然后交给下一个中间件的process_request函数
-
3、到达最后一个中间件的process_request函数处理后会到达url路由系统
-
4、然后从路由系统直接跳转到第一个中间件的process_view函数,依次向后面中间的process_view传递
- 最后到达views.py处理函数,获取网页中的数据
-
5、获取的数据会交给最后一个中间件的process_response方法处理,然后依次向前面的中间件process_response
- 方法提交请求的内容,最后由最前面的中间件将请求数据返回到客户端
-
6、在任一中间件的process_request和process_view方法中有返回值就会直接返回给process_response
1.3 生命周期图解
-
1、首先会交给中间件,中间件处理后交给路由系统
-
2、路由系统
- 1:Django程序会到urls.py文件中找到对应请求的处理函数(视图函数)
-
3、视图函数
- 1:视图函数会找到对应的html模板文件
- 2:然后到数据库中取得数据替换html模板中的内容
- 3:使用static中的js和css文件结合对html渲染
- 4:最后Django将最终渲染后的html文件返回给中间件
-
4、中间件再调用process_response方法处理,最后交给用户
02.中间件使用
2.1 创建存放中间件的文件夹
-
- 在工程目录下创建任意目录,这里创建路径为:
/project/middle/m1.py
- 在工程目录下创建任意目录,这里创建路径为:
2.2 settings.py中注册中间件
1 | MIDDLEWARE = [ |
2.3 写处理函数test
- 在views.py文件中写处理函数test
1 | def test(request): |
2.4 定义中间件
- 在/project/middle/m1.py文件中定义中间件
1 | from django.utils.deprecation import MiddlewareMixin |
__END__