CSIC_716_20200114【Django入门---django中间件、csrf跨站请求伪造、auth认证】

中间件

凡是全局相关的功能,都可以考虑使用中间件来实现。例如:全局的身份校验、访问频率校验、访问黑名单、访问白名单。

中间件总共有5个方法可以使用:

process_request: 
请求从web服务网关接口传到中间件层时,会按照先后顺序依次执行每一个中间件里的process_request方法,遇到没有process_request的中间件会直接跳到下一个中间件。如果不满足其中任何一个就会被拒绝访问。如果process_request返回了一个值HttpResponse对象,那么程序就会从此原路返回,返回的路线要么经过process_response,如果没有process_response也能直接通过HttpResponse返回到前端。

process_response
当执行完视图函数后,程序会按照与process_request相反的顺序执行process_response方法。
该方法必须要有return返回值,否则报错。一般是return response,也可以自己返回一个HttpResponse替换从视图函数传过来的值,外层可以偷换内层传出来的东西

process_view
在中间件放行后,执行视图函数之前,会执行process_view

process_template_response
他在视图函数执行完之后,process_response执行前执行,他的执行顺序和process_response一样,顺序反向。他触发的条件是:视图函数返回的对象中必须要有render属性对应的render方法。


process_exception
在视图函数报错的时候触发,顺序也是反向的。

  

猜你喜欢

转载自www.cnblogs.com/csic716/p/12194242.html