django中间件

Django之中间件

中间件执行流程

我们从浏览器发出一个请求 Request,得到一个响应后的内容 HttpResponse ,这个请求传递到 Django的过程如下:

流程

也就是说,每一个请求都是先通过中间件中的 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 对象可以是传入函数的那一个原始对象(通常已被修改),也可以是全新生成的。

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

自定义中间件

from django.shortcuts import HttpResponse
class M1: def process_request(self, request): print('M1.process_request') #如果此处有return,后面的不执行,直接返回给用户 # return HttpResponse('滚') def process_view(self, request, callback, callback_args, callback_kwargs): print('m1.process_view') def process_exception(self, request, exception): print('m1.process_exception') def process_response(self, request, response): print('M1.process_response') return response def process_template_response(self,request,response): print('template') class M2: def process_request(self, request): print('M2.process_request') def process_view(self, request, callback, callback_args, callback_kwargs): print('m2.process_view') def process_exception(self, request, exception): print('m2.process_exception') def process_response(self, request, response): print('M2.process_response') return response

自定义中间件

中间件的注册

在django项目的settings模块中,有一个 MIDDLEWARE变量,其中每一个元素就是一个中间件,如下图:

中间件

需要注意的是顺序,因为是列表或者元组的顺序,注册时按照你既定顺序来配置

更多中间件实际用法

见此处:http://www.ziqiangxuetang.com/django/django-middleware.html

转载于:https://www.cnblogs.com/lbzbky/articles/11070094.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值