django-中间件
Middleware(中间件)
Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。
每个中间件组件负责执行某些特定功能。例如django中的AuthenticationMiddleware组件,该组件 将用户与使用会话的请求相关联。
多个中间件的执行顺序
- 在请求视图被处理前,中间件由上至下依次执行
- 在请求视图被处理后,中间件由下至上依次执行
中间件的定义方法
定义一个中间件工厂函数,然后返回一个可以被调用的中间件。
中间件工厂函数需要接收一个可以调用的get_response对象。
返回的中间件也是一个可以被调用的对象,并且像视图函数一样需要接收一个request对象参数,返回一个response对象。
1 def simple_middleware(get_response): 2 # 此处编写的代码仅在Django第一次配置和初始化的时候执行一次。 3 4 def middleware(request): 5 # 此处编写的代码会在每个请求处理视图前被调用。 6 7 response = get_response(request) 8 9 # 此处编写的代码会在每个请求处理视图之后被调用。 10 11 return response 12 13 return middleware
中间件定义好后需要在setting.py文件中添加注册中间件
1 MIDDLEWARE = [ 2 'django.middleware.security.SecurityMiddleware', 3 'django.contrib.sessions.middleware.SessionMiddleware', 4 'django.middleware.common.CommonMiddleware', 5 # 'django.middleware.csrf.CsrfViewMiddleware', 6 'django.contrib.auth.middleware.AuthenticationMiddleware', 7 'django.contrib.messages.middleware.MessageMiddleware', 8 'django.middleware.clickjacking.XFrameOptionsMiddleware', 9 'app01.middleware.TestMiddleWare1', 10 'book.middleware.my_middleware', # 添加中间件 11 ]