自定义django的中间件

中间件是介于request 和 response 处理之间的一道处理过程,用于全局范围改变Django的输入和输出,简单的来说中间件是帮助我们在视图函数指向之前和执行之后都可以做一些额外的操作。举个例子:可以用来在访问网站之前,检查访问的ip地址是否频繁,如果频繁就阻止访问。

Django自定义中间件

继承自MiddlewareMixin。MiddlewareMixin里面实现了4个方法,自定义中间件时,只要重写这4个方法即可。

#方法一、处理请求之前:在request对象产生之后,url匹配之前调用,返回None或者HttpResponse
def process_request(self,request):
    pass
#方法二、处理视图之前:url匹配之后,视图函数调用之前调用,返回None或者HttpResponse对象
def process_view(self,request,view_func,*view_args,**view_kwargs):
    pass
#方法三、处理响应之后:视图函数调用之后,所有的响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象。
def process_response(self,request,response):
    pass
#方法四、异常处理:当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象
def process_exception(self,exception):
    pass

举个例子:

#在项目文件夹下创建middleware.py文件,添加如下代码:
try:
	from django.utils.deprecation import MiddlewareMixin  #Django1.10x

except ImportError:
	MiddlewareMixin=object   #大于1.10x

class mymiddleware(MiddlewareMixin):
	def __init__(self):
		print('init=====')
	def process_request(self,request):
		print('request=====')
	def process_view(self,request,view_func,*view_args,**view_kwargs):
		print('view=======')
	def process_response(self,request,response):
		print('response==')
		return response
		

#在setting文件MIDDLEWARE_CLASSES中注册middleware:
'middleware.mymiddleware'



#然后修改views.py中的index
def index(request):
    print('==========index======')
    return render(request,'index.html')

#运行服务器后输出
>>> --------------init
>>> --------------request
>>> --------------view
>>> ======index======
>>> --------------response


#再次刷新输出
>>> --------------request
>>> --------------view
>>> ======index======
>>> --------------response

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值