Flask  请求钩子的实现

 更新时间:2021年11月26日 08:36:27   作者:tigeriaf  
这篇文章主要给大家分享了Flask请求钩子的实现,在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如:在请求开始时,建立数据库连接;在请求开始时,根据需求进行权限校验;在请求结束时,指定数据的交互格式;下面来看看文章详细介绍内容吧

在 Web 应用中,有时需要在响应请求前或者响应请求后做一些处理,为了让每个视图函数避免编写重复功能的代码,Flask 提供了请求钩子,它们可以用来注册在请求处理的不同阶段执行的处理函数,我们就可以轻易的对请求进行预处理和后处理。

Flask 常用请求钩子如下:

  • before_first_request:在处理第一个请求之前运行
  • before_request:在每次请求之前运行,如果没有未处理的异常抛出,会在每个请求结束后运行
  • after_request:如果没有未处理的异常抛出,在每次请求结束后运行
  • teardown_request:即使有未处理的异常抛出,也会在每个请求结束后运行

这些请求钩子是使用装饰器方式实现,用法也非常简单,使用起来和app.route()装饰器基本相同。下面使用这些请求钩子装饰一些函数,用于在每次请求前后做一些处理,为了方便理解,只是单纯打印一句话。

@app.before_first_request

def before_first_request():

    print('before_first_request')

@app.before_request

def before_request():

    print('before_request')

@app.after_request

def after_request(response):

    print('after_request')

    return response

@app.teardown_request

def teardown_request(e):

    print('teardown_request')

@app.route('/test')

def test():

    return 'test'

第一次请求控制台输出:

第二次请求控制台输出:

下面是请求钩子的一些常见应用场景:

  • before_first_request:第一个请求之前运行,可以进行一些 Web 程序的初始化操作
  • before_request:每次请求之前运行,可以进行数据库连接的创建操作、用户的权限校验操作等
  • after_request:我们经常在视图函数中进行数据库操作,比如更新、插入,之后需要将更改提交到数据库中,提交更改的代码就可以放到 after_request 钩子注册的函数中
  • teardown_request:可以接收视图函数的异常,一般用来记录错误日志

注意: 每个请求钩子可以注册任意多个处理函数,函数名也并不是必须和钩子名称相同。如果有多个 before_request,执行顺序从上往下;after_request 接收一个响应对象,并且返回同一个或者更新后的响应对象,多个 after_request 执行顺序是从下往上。

到此这篇关于Flask  请求钩子的实现的文章就介绍到这了,更多相关Flask  请求钩子内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python opencv3实现人脸识别(windows)

    python opencv3实现人脸识别(windows)

    这篇文章主要为大家详细介绍了python opencv3实现人脸识别程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 浅析Python迭代器的高级用法

    浅析Python迭代器的高级用法

    这篇文章主要介绍了Python迭代器的高级用法,在实际场景当中非常实用,可以帮助我们大大简化代码的复杂度。感兴趣的朋友可以了解下
    2020-07-07
  • Python for i in range ()用法详解

    Python for i in range ()用法详解

    今天小编就为大家分享一篇Python for i in range ()用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python区块链创建Block Class教程

    Python区块链创建Block Class教程

    这篇文章主要为大家介绍了Python区块链创建Block Class教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 详解SQLAlchemy框架使用手册

    详解SQLAlchemy框架使用手册

    SQLAlchemy是一个灵活且功能强大的ORM框架,它可以让Python开发者轻松地管理数据库,本文主要介绍了SQLAlchemy框架使用手册,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Python3数据库操作包pymysql的操作方法

    Python3数据库操作包pymysql的操作方法

    这篇文章主要介绍了Python3数据库操作包pymysql的操作方法,文章通过实例代码相结合给大家介绍的非常详细,需要的朋友可以参考下
    2018-07-07
  • Python anaconda安装库命令详解

    Python anaconda安装库命令详解

    这篇文章主要介绍了Python anaconda安装库命令详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • 在Django model中设置多个字段联合唯一约束的实例

    在Django model中设置多个字段联合唯一约束的实例

    今天小编就为大家分享一篇在Django model中设置多个字段联合唯一约束的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Tensorflow实现AlexNet卷积神经网络及运算时间评测

    Tensorflow实现AlexNet卷积神经网络及运算时间评测

    这篇文章主要为大家详细介绍了Tensorflow实现AlexNet卷积神经网络及运算时间评测,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • python统计字母、空格、数字等字符个数的实例

    python统计字母、空格、数字等字符个数的实例

    今天小编就为大家分享一篇python统计字母、空格、数字等字符个数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论