Django进阶–中间件-初识
2019-04-01 11:34
78 查看
Django进阶–中间件
1. 简介
中间件是Dajngo框架对
request/response响应的轻量级插件系统。作用于用户和视图函数之间。
2. 使用
2.1 创建模块
在app下创建一个自定义中间件模块`
-project #项目名 -project -book #app名 -Middleware.py # 起名随意
2.2 编写
def simple_middleware(get_response): #可以编写函数中间件 # 仅在项目启动时运行一次 print('函数中间件项目启动运行') def middleware(request): # 对于每个request请求,调用视图函数之前运行 print('函数中间件视图函数被调用前运行') response = get_response(request) #调用视图函数 # 对于每个request请求,调用视图函数之后运行 print('函数中间件视图函数被调用后运行') return response return middleware class SimpleMiddleware: #也可以编写类中间件 def __init__(self, get_response): self.get_response = get_response # 仅在项目启动时运行一次 print('类中间件项目启动运行') def __call__(self, request): # 对于每个request请求,调用视图函数之前运行 print('类中间件视图函数被调用前运行') response = self.get_response(request) # 对于每个request请求,调用视图函数之后运行 print('类中间件视图函数被调用后运行') return response
2.3 注册
在
settings.py中注册
MIDDLEWARE = [ 'book.middleware.SimpleMiddleware', 'book.middleware.simple_middleware', ]
注意:此处我们先注册了类中间件
2.4 验证
启动项目,发送请求
Starting development server at http://0.0.0.0:8000/ Quit the server with CONTROL-C. 函数中间件项目启动运行 类中间件项目启动运行 #发送一次请求后 类中间件视图函数被调用前运行 函数中间件视图函数被调用前运行 #执行一次请求后 视图函数被调用 函数中间件视图函数被调用后运行 类中间件视图函数被调用后运行 [01/Apr/2019 10:51:30] "GET /book/students/ HTTP/1.1" 200 9167
2.5 流程
基于注册先后顺序(若函数中间件先注册,调用顺序相反)
- 启动时的调用顺序:栈式结构,先注册者后调用
- 请求时的调用顺序:洋葱模型、先注册者先调用、访问到洋葱核心(视图函数)再原路返回。
对于第2条详解,将每一个注册的中间件想象为洋葱的一层,先注册的在外层。请求到来时,从最外层,层层深入直到视图函数;然后再原路返回,直到最外层。
3. 补充
参考文献:官方文档
心蓝没有墨染帅气,不过比墨染有菜花🥦
相关文章推荐
- python3开发进阶-Django框架的中间件的五种用法和逻辑过程
- Django进阶之中间件
- Django进阶之中间件
- Django进阶(路由系统、中间件、缓存、Cookie和Session、Ajax发送数据
- django上课笔记6-MVC,MTV架构-中间件-初识Form组件
- Django 进阶(分页器&中间件)
- Django进阶–上下文处理器-初识
- Django进阶——模型的高级用法
- python之类-django进阶
- Python菜鸟之路:Django 中间件
- Django:之中间件、微信接口和单元测试
- Django进阶(二)
- Django进阶(一) 数据库的ORM操作之一对多
- Django应用进阶
- Django进阶(二) 数据库的ORM操作之多对多
- Django进阶(三)
- 【Django】Django的上下文处理器(Context Processor)和中间件(Middleware)(十一)
- Django中间件
- Django框架学习-Templates进阶用法
- [Python] Django框架入门5——静态文件、中间件、上传图片和分页