flask学习记录05-flask中的请求钩子

图片

这节是flask-视图函数及路由模块的最后一个章节,下一节将开始记录flask-模块相关的知识。

请求钩子的作用

请求钩子是通过装饰器的形式实现的,其目的就是避免写重复的代码.

在客户端和服务器交互的过程中,做些准备工作和扫尾工作.

flask中有哪些装饰器

  • before_first_request

  • before_request

  • after_request

  • teardown_request

请求钩子该如何使用

before_first_request
  • 处理第一个请求前执行

  • 只执行一次

  • 不能拦截第一次请求的执行

写一个实例,来看下before_first_request,该怎么用

图片

可以看到before_first_request只执行一次,且在第一个请求前进行执行,我们分析下它在浏览器中的执行过程

图片

before_request
  • 在每次请求前都执行

  • 对应的函数如果返回一个响应,视图函数不被调用

写一个实例来看下before_request怎么用

图片

可以看到它每次都会执行,如果返回响应,函数就不被调用了

图片

基于这个特性,我们是不是可以在对应的函数中,在请求开始之前,做一些处理。

比如典型的需求,对一些非法的请求进行拦截.我们可以在before_request请求钩子对应的函数中,写个if语句判断ip是否在黑名单里,如果在直接返回提示信息

after_request
  • 必须接收一个response对象

  • 必须返回一个response对象

  • 对应的函数中可以对response对象进行处理

写一个实例来看下after_request怎么用,发现页面报错了

图片

看样子是缺少一个参数,我们查询源码看下

图片

原来忘记接收和返回response返回对象了,我们加入看下,是不是可以了

图片

teardown_request
  • 每次请求执行之后

  • 必须接收一个error对象

  • 如果请求异常,对应的函数可捕获具体异常

写一个实例来看下teardown_request怎么用,发现页面又报错了

图片

看样子,还是缺少一个参数,我们继续看下源码要求的参数

图片

原来必须接收一个error对象,我们添加参数,发现已经成功了

图片

请求钩子在项目中有很大的用处,这里只是一些简单的入门操作,后续在项目中可以具体应用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦途的测开笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值