专题13:Django之中间件

1、中间件的定义

举例(实际上中间件不仅仅只在这三个地方触发):

2、编写中间件

对于新手来说,重点就是前三个,即:process_request, process_view和process_response

 

大多数情况下,如果中间件返回的是None,则说明request是OK的,可以进入下一个环节了,而如果返回HttpResponse对象,则说明request是有问题的

3、注册中间件

实操:

 

4、中间件执行总流程(非常重要,web端面试高频题,必须会)

 面试官问:你讲述一下,请求进到Django直到响应出来都经历了哪些环节?

答:经历了中间件的process_request方法,URL(路由),中间件的process_view方法,以及Django的MTV结构。此外,如果请求在进入Django的过程中抛出了异常,则会返回HttpResponse,而所有的HttpResponse都会进入到process_response做最后一道处理,生成最终的响应,返回给浏览器。

详细描述:

浏览器发送一个请求,进入到Django的process_request中间件(按照注册顺序,由上至下逐一调用每一个中间件的process_request方法),此时,有两条路:一条是return None,继续往后走进入到URL,另一条是return HttpResponse,那请求到这里就终止了,直接进入到process_response环节。如果是return None进入到URL路由,从路由出来后就进入到process_view中间件环节,同样是按照注册顺序,由上至下逐一调用每个中间件的process_view方法。这里也是分两条路,一个是return None继续向下走,另一个是return HttpResponse结束。如果是return None,则进入到Django的MTV结构里。如果在视图里面抛出Exception(异常),被process_exception中间件抓到了(注意,在请求进入视图之后,是按照注册顺序反向调用每个中间件的process_exception),则return HttpResponse

5、CSRF攻击(跨站伪造请求攻击)

1)CSRF定义

2)CSRF防范

如上图所示,进行CSRF攻击的网站只能从用户浏览器的cookie中获取到暗号2,却没有暗号1,所以攻击不会成功。 

3)CSRF配置步骤

实操:

views.py中:

urls.py中:

settings.py中:

解决方法:在html文件的form标签下写{% csrf_token %}

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值