什么是中间件?:Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。可以类比flask中的请求钩子。
使用方式:
在app应用中新建一个mideleware.py文件,代码示例如下:
def simple_middleware(get_response):
# 此处编写的代码仅在Django第一次配置和初始化的时候执行一次。
def middleware(request):
# 此处编写的代码会在每个请求处理视图前被调用。
response = get_response(request)
# 此处编写的代码会在每个请求处理视图之后被调用。
return response
return middleware
中间件工厂函数需要接收一个可以调用的get_response对象。
返回的中间件也是一个可以被调用的对象,并且像视图一样需要接收一个request对象参数,返回一个response对象。
定义形式和装饰器函数类似,可以类比理解。
定义中间件后,还需要在settings.py中注册中间件
MIDDLEWARE = [
# 注册中间件
'app.middleware.my_middleware',
]
当在MIDDLEWARE中自己注册了多个中间件会发生什么??
结论:
- 在请求视图被处理前,中间件由上至下依次执行
- 在请求视图被处理后,中间件由下至上依次执行
亲自code试试看吧……