您的位置:首页 > 编程语言 > Go语言

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 流程

基于注册先后顺序(若函数中间件先注册,调用顺序相反)

  1. 启动时的调用顺序:栈式结构,先注册者后调用
  2. 请求时的调用顺序:洋葱模型、先注册者先调用、访问到洋葱核心(视图函数)再原路返回。

对于第2条详解,将每一个注册的中间件想象为洋葱的一层,先注册的在外层。请求到来时,从最外层,层层深入直到视图函数;然后再原路返回,直到最外层。

3. 补充

参考文献:官方文档

心蓝没有墨染帅气,不过比墨染有菜花🥦

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: