中间件是一个轻量级的,底层的插件,可以介入Django的请求和响应过程(面向切面编程)
中间件的使用:
1、在项目的目录下创建目录middleware,在middleware目录下创建模块,在模块中定义中间键,注意,中间件虚继承MiddlewareMixin
2、在setting中配置,在setting下的MIDDLEWARE中添加:目录名middleware.模块名.中间件名
常用的方法:
1、def process_request(self,request):
该方法在进入url路由前执行,在该方法中可以使用 return 响应体 来终止向后执行,直接响应客户端,所有的url请求都会执行它
2、def process_exception(self, request, exception):
该方法在出现异常的时候执行,在该方法中可以处理跳过异常.使程序不出错
例:
我在middleware目录下创建模块testMidKey,在该模块下定义中间键TestMiddleWare
setting中的设置:
'middleware.testMidKey.TestMiddleWare',
中间键的具体设置:
from django.http import HttpResponse
from django.utils.deprecation import MiddlewareMixin
class TestMiddleWare(MiddlewareMixin):
def process_request(self, request):
# 获取用户的ip地址
ID = request.META['REMOTE_ADDR']
# 如果用户id在列表中,则直接被阻断,不会跳转至目标页面
if ID in ['192.168.96.223']:
return HttpResponse('Come on Baby')
def process_exception(self, request, exception):
# 当程序发生异常使,跳转至下方给的新页面
return HttpResponse("新页面")
注:
request.path 获取访问地址
request.META['REMOTE_ADDR'] 获取用户ip地址