美文网首页FastAPI
【OK】flask笔记(十六):请求钩子

【OK】flask笔记(十六):请求钩子

作者: warmsirius | 来源:发表于2019-09-25 08:05 被阅读0次

一、什么是请求钩子?

1.请求钩子的含义

有时在处理请求之前或之后执行代码会很有用,在Django中学的中间件类似。

例如,在请求开始时,我们可能需要创建数据库连接或认证发起请求的用户。

为了避免在每个视图函数中都使用重复的代码,Flask提供了注册通用函数功能,注册的函数可在请求被分发到视图函数之前或之后调用。

请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子:

  • before_first_request: 注册一个函数,在处理第一个请求前运行
@app.before_first_request
  • before_request:注册一个函数,在每次请求前运行
@app.before_request
  • after_request(response):如果没有未处理的异常抛出,在每次请求后运行
@app.after_request
  • teardown_request(response):在每次请求后运行,即使有未处理的异常抛出,仍然运行

注意: 只是在debug=False的时候才会出现,如果为True,不会走这个方法。

@app.teardown_request

2. 请求钩子和视图函数共享数据

请求钩子和视图函数之间共享数据一般使用 上下文全局变量:g

例如,before_request处理程序可以从数据库中加载已登录用户,并将其保存到g.user中。随后调用视图函数时,视图函数再使用g.user获取用户。

二、请求钩子举例

可以通过request来获取请求,来区分请求钩子的执行,这种使用钩子的情况比较少,但是比较麻烦

@app.before_request
def handle_before_request():
    '''在第一次请求处理之前先被执行'''
    path = request.path
    if path == url_for("index"):
        print("在请求钩子中判断请求的视图逻辑")
    elif path == url_for('hello'):
        print('在hello中判断请求的逻辑')
    print("handle_before_reques被执行")
@app.before_request
def handle_before_request():
    '''在第一次请求处理之前先被执行'''
    path = request.path
    if path in [url_for("index"), url_for("hello")]:
        print("在请求钩子中判断请求的视图逻辑")
    elif path == url_for('hello'):
        print('在hello中判断请求的逻辑')
    print("handle_before_reques被执行")

相关文章

  • 【OK】flask笔记(十六):请求钩子

    一、什么是请求钩子? 1.请求钩子的含义 有时在处理请求之前或之后执行代码会很有用,在Django中学的中间件类似...

  • Flask请求钩子

    请求钩子是通过装饰器的形式实现,Flask支持如下四中请求钩子: before_first_request:在处理...

  • Flask——请求钩子

    在客户端和服务器交互过程中,有些准备工作或者扫尾工作需要处理。比如:1.在请求开始时,建立数据库连接;2.在请求开...

  • day60-钩子函数及邮件发送

    1钩子函数 flask中钩子函数相当于django中在请求前及请求后做什么的中间件。钩子函数有before:请求之...

  • 2020-06-01--flask03--flask基础03

    本节内容 请求钩子 request 状态保持(cookie,session) 上下文 flask_script j...

  • 16. Flask 请求钩子

    介绍 在Django中有中间件这个类来做一些视图执行前、执行中、执行后的一些额外业务处理,那么在Flask则是采用...

  • Flask学习日志(四) - Flask请求上下文与响应

    文 / 秦未 OK,今天学习Flask的请求上下文与响应,我们先看一看Flask请求和响应的过程示意图: 首先我们...

  • Part A

    请求钩子响应返回状态码: 利用Response对象进行返回 重定向 使用FLask-Script 使用Bootst...

  • Flask初探六 ( 请求钩子 / 钩子函数 / 蓝图 )

    请求钩子 通过装饰器为一个模块添加请求钩子, 对当前模块的请求进行额外的处理. 比如权限验证. 项目结构 应用钩子...

  • flask基础(二)

    flask中的中间键(钩子函数) before_first_request第一次请求才被调用(可用于缓存) bef...

网友评论

    本文标题:【OK】flask笔记(十六):请求钩子

    本文链接:https://www.haomeiwen.com/subject/ccjryctx.html