关于django中间件的知识

这两天在看django中间件的一些知识。深有感触。

以前用Python写的一个的装饰器用来做权限管理,在没看中间件的知识之前,用起来还不错,看来以后,觉得还是MiddleWare强大(只限于本应用场景),不用在每一个函数钱用装饰器进行限制,只需写好一段中间件函数,它会自动在request前进行执行,进行全局控制。

中间件的安装:在setting中,

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.cache.CacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    <span style="color:#ff0000;">'myapp.MyMiddleWare.TestMiddleware'</span>
)


按照官网的讲解,CacheMiddleWare必须在SessionMiddleware和AuthenticationMiddleware之下。红字之处的意思是将自己定制的中间件添加到项目中


下面介绍关于Request预处理函数:这个方法的调用时机是在Django接收到request之后,但仍未解析URL以确定应当运行的view之前。

process_request(self, request) :
			........

process_request() 应当返回 None 或 HttpResponse 对象.
如果返回 None , Django将继续处理这个request,执行后续的中间件, 然后调用相应的view.
如果返回 HttpResponse 对象, Django 将不再执行 任何 其它的中间件(而无视其种类)以及相应的view。 Django将立即返回该 HttpResponse .


此外,还有其他几种处理函数:

View预处理函数:process_view(self,request,view,args,kwargs), 这个方法的调用时机在Django执行完request预处理函数并确定待执行的view之后,但在view函数实际执行之前。
Response后处理函数:process_response(self,request,response), 这个方法的调用时机再Django执行view函数并生成response之后。
Exception后处理函数process_exception(self,request,exception), 在request处理过程中出了点问题并且view函数抛出了一个未捕获的异常时才会被调用


在将自己编写的中间件函数写好以后,就能使用了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值