10.中间键Middleware

中间键Middlewaredjango

01.中间件顾名思义:
  是介于request与response处理之间的一道处理过程,相对比较轻量级,
  而且在全局上改变django的输入与输出。由于改变的是全局,因此须要谨慎实用,用很差会影响到性能。服务器

02.自定义中间件session

  中间件中一共有四个方法:
    process_request
    process_view
    process_exception
    process_responseapp

  <1>建立一个中间键.py文件函数

 1 from django.utils.deprecation import MiddlewareMixin  2 class CustomerMiddleware(MiddlewareMixin):  3  4 def process_request(self, request):  5 # 请求发出后,进入,没有返回值  6 print("CustomerMiddleware process_request")  7 #return HttpResponse("process_request中断")  8  9 def process_response(self, request, response): 10 # 视图函数走完以后进入,必须有返回值 11 print("CustomerMiddleware process_response") 12 return response # 返回的response必须加返回值,不然会报错 13 14 def process_view(self, request, callback, callback_args, callback_kwargs): 15 #走过视图以后进入_view 16 print("Md1view") 17 18 def process_exception(self, request, exception): 19 # 若是视图函数有错误,则走_exception,加参数exception进行错误捕获, 20 # 捕获后将执行process.response 21 print("md1 process_exception...") 22 return HttpResponse(exception)

 

  <2>在settings.py中添加本身的中间键所在的地址性能

发起请求 proccess_request 从上到下依次通过中间键middleware
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'app01.my_middlewares.CustomerMiddleware' # 添加本身的中间键:路径.文件名.类名
]
视图函数views process_response 从下到上依次通过中间键middlewarespa


03.应用案例code

一、作IP访问频率限制
某些IP访问服务器的频率太高,进行拦截,好比限制每分钟不能超过20次。csrf

二、URL访问过滤
若是用户访问的是login视图(放过)
若是访问其余视图,须要检测是否是有session认证,已经有了放行,没有返回login,这样就免得在多个视图函数上写装饰器了!中间件

相关文章
相关标签/搜索