脚本宝典收集整理的这篇文章主要介绍了21.-中间件,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
# 在项目路径下创建middleware(自定义名称)中间件文件夹 # settings.py 中需要注册一下自定义的中间件 MIDDLEWARE = [ 'middleware.py_name.calss_name', #中间件文件夹/py文件/中间件类 ] # 配置为数组,中间件被调用时先以先上到下,再由下到上的顺序调用 / 进视图之前是从上到下,进视图之后是从下到上
# 中间件类必须继承自 from django.utils.deprecation import MiddlewareMixin class Middleware_Name(MiddlewareMixin): ...
# 中间件类必须实现下列五个方法中的一个或多个 def process_request(self,request) #执行路由之前被调用,在每个请求上调用,返回None或者HttpResponse对象 def process_view(self,request,callback,acllback_args,acllback_kwargs) #调用视图之前被调用,在每个请求上调用,返回None或者HttpResponse对象 def process_view(self,request,response) # 所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象 def process_exception(self,request,exception) # 当处理过程中抛出异常时调用,返回一个HttpResponse对象 def process_template_response(self,request,response) #在视图函数执行完毕且视图返回的对象中包含render方法时被调用,该方法需要返回实现了render方法的响应对象 # 中间件中的大多数方法在返回None时表示忽略当前操作进入下一事项,当返回HttpResponse对象时表示此请求结束,直接返回给客户端
request.META['REMOTE_ADDR'] #可以得到远程客户端的地址 request.path_info #可以得到客户的访问的路由信息
# 中间件类 class VisitLimit(MiddlewareMixin): # 定义字典记录访问次数 visit_times = {} def process_request(self, request): # 获取访问者IP地址 ip_address = request.META['REMOTE_ADDR'] # 获取访问路由 path_url = request.path_info # 如果是以/test地址开头,返回None,继续执行 if not re.match('^/test', path_url): return # 存储ip地址访问次数 times = self.visit_times.get(ip_address, 0) print('ip', ip_address, '已经访问', times) # 访问次数+1 self.visit_times[ip_address] = times + 1 # 判断访问次数 if times < 5: return return HttpResponse('已经访问过' + str(times) + '次,访问被禁止')
以上是脚本宝典为你收集整理的21.-中间件全部内容,希望文章能够帮你解决21.-中间件所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。