Django—中间件详解
# file:
from django.http import HttpResponse
from django.utils.deprecation import MiddlewareMixin
import re
class MWare(MiddlewareMixin):
count_dict = {} #创建用于统计次数的字典
def process_request(self,request):
request_ip = request.META['REMOTE_ADDR'] #获取请求IP
request_url = request.path_info #获取请求URL
if re.match(r'^/test',request_url): #匹配请求是否以/test开头
times = self.count_dict.get(request_ip,0) #查询当前IP的请求次数,默认为0
self.count_dict[request_ip]= times + 1 #请求次数 + 1
if times < 5: #如果请求次数<5次,请求正常通过
return
else: #如果请求次数>5次,则返回HttpResponse,阻止请求
return HttpResponse("访问次数超过5次,请求失败")
else: #如果不是以/test开头则直接正常通过
return