14-中间件和上下文处理器

14-中间件和上下文处理器

01-中间件

02-上下文处理器

01-中间件

在http请求 到达视图函数之前   和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法。

中间件的执行流程

1、执行完所有的request方法 到达视图函数。

2、执行中间件的其他方法

2、经过所有response方法 返回客户端。

注意:如果在其中1个中间件里 request方法里 return了值,就会执行当前中间的response方法,返回给用户 然后 报错。。不会再执行下一个中间件。

 

也就是说,每一个请求都是先通过中间件中的 process_request 函数,这个函数返回 None 或者 HttpResponse 对象,如果返回前者,继续处理其它中间件,如果返回一个 HttpResponse,就处理中止,返回到网页上。

中间件中可以定义4个方法,分别是:

  1. process_request(self,request) 发送请求
  2. process_view(self, request, callback, callback_args, callback_kwargs) 执行完 request 预处理函数并确定待执行的 view 之后,但在 view 函数实际执行之前。
  3. process_template_response(self,request,response)
  4. process_exception(self, request, exception) 收集错误信息
  5. process_response(self, request, response) 必须返回 HttpResponse 对象. 这个 response 对象可以是传入函数的那一个原始对象(通常已被修改),也可以是全新生成的。

执行顺序也是按照以上顺序执行的.

 中间件注册

中间件例子

 

猜你喜欢

转载自www.cnblogs.com/jun-1024/p/10860887.html