django之中间件的理解(一)

中间件:是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出

面向切面的过程

每个中间件组件是一个独立的Python类

可以定义下面方法中的一个或多个

1)_init _:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件

2)process_request(request):执行视图之前被调用,在每个请求上调用,返回None或HttpResponse对象

3)process_view(request, view_func, view_args, view_kwargs):调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象

4)process_template_response(request, response):在视图刚好执行完毕之后被调用,在每个请求上调用,返回实现了render方法的响应对象

5)process_response(request, response):所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象

6)process_exception(request,response,exception):当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象

使用中间件,可以干扰整个处理过程,每次请求中都会执行中间件的这个方法

简单的说一般过程就是:

请求URL,调用了一个视图view,调用一个模板HTML,返回结果

在匹配之前干预用process_request(request)

在视图之前执行process_view(request, view_func, view_args, view_kwargs)

视图执行完调用模板之前process_template_response(request, response)

在实际返回浏览器之前调用process_response(request, response)

如自定义异常处理

与settings.py同级目录下创建myexception.py文件,定义类MyException,实现process_exception方法

from django.http import HttpResponse

class MyException():

def process_exception(request,response, exception):

return HttpResponse('abc')

将类MyException注册到settings.py中间件中

MIDDLEWARE_CLASSES = ('test1.myexception.MyException',)

定义视图,并发生一个异常信息,则会运行自定义的异常处理

def myExp(reqeuest):

a1=int('abc')

return HttpResponse('hello')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值