整理一下middleware 的使用。
自定义一个,在模块下定义一个middleware.py
然后。。。。(采用的类)
import time
import logging
logger = logging.getLogger(__name__)
class TimerMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
begin = time.time()
# 注意这里是代表请求前的处理
response = self.get_response(request)
# 这里是代表请求后的处理
end = time.time()
# 这里代表插入一个请求头
response['X-Page-Duration-ms'] = int((end - begin) * 1000)
# 这里展示3个参数,时间,url路径,和get的请求
logger.info('%s %s %s' % (begin - end, request.path, request.GET.dict()))
return response
既然涉及到了日志,那么这边就要进行日志的配置,前往base.py
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "DEBUG",
"formatter": "simple"
},
"file": {
"class": "logging.FileHandler",
"formatter": "simple",
"filename": "logtest.log"
},
# 在这里,handler里面根据上面的模板,配置filename
"middleware": {
"class": "logging.FileHandler",
"formatter": "simple",
"filename": os.path.join(BASE_DIR, 'middleware.log')
},
},
"loggers": {
"simple": {
"level": "DEBUG",
"handlers": ["file"],
"propagate": True
},
"standard": {
"level": "ERROR",
"handlers": ["console", "file"],
"propagate": True
},
# 在这里,loggers里面根据上面的模板,配置handlers,普遍选择console和对应的日志配置
"interview.middleware": {
"level": "INFO",
"handlers": ["console", "middleware"],
"propagate": False
},