美文网首页
Flask——请求钩子

Flask——请求钩子

作者: Gavininn | 来源:发表于2019-05-29 15:07 被阅读0次

在客户端和服务器交互过程中,有些准备工作或者扫尾工作需要处理。比如:
1.在请求开始时,建立数据库连接;
2.在请求开始时,根据需求进行全年校验。
3.在请求你结束时,指定数据的交互格式。

为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设置等功能,即请求钩子

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

在处理第一个请求前执行

2.before_request

在每次请求前执行;如果在某修饰的函数中返回了一个相应,视图函数将不再被调用。

3.after_request

在每次请求后执行(如果没有抛出错误);接收一个参数:视图函数做出的相应,在此函数中可以对响应值在返回之前做最后一步修改处理,需要将参数中的相应在此参数中进行返回。

4.teardown_request

在每次请求后执行;接收一个参数:错误信息,如果有相关错误抛出,需要设置flask的配置DEBUG=False,teardown_request才会接收到异常对象。

from flask import Flask
from settings.dev import DevConfig

app = Flask(__name__)
# 项目配置
app.config.from_object(DevConfig)

@app.before_first_request
def before_first_request():
    print("----before_first_request----")
    print("系统初始化的时候,执行这个钩子方法")
    print("会在接收到第一个客户端请求时,执行这里的代码")

@app.before_request
def before_request():
    print("----before_request----")
    print("每一次接收到客户端请求时,执行这个钩子方法")
    print("一般可以用来判断权限,或者转换路由参数或者预处理客户端请求的数据")

@app.after_request
def after_request(response):
    print("----after_request----")
    print("在处理请求以后,执行这个钩子方法")
    print("一般可以用于记录会员/管理员的操作历史,浏览历史,清理收尾的工作")
    response.headers["Content-Type"] = "application/json"
    # 必须返回response参数
    return response


@app.teardown_request
def teardown_request(exc):
    print("----teardown_request----")
    print("在每一次请求以后,执行这个钩子方法,如果有异常错误,则会传递错误异常对象到当前方法的参数中")
    print(exc)

@app.route("/")
def index():
    print("----视图函数----")
    print("视图函数被运行了")
    return "视图函数被运行了<br>"

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=80)
  • 在第1次请求时的打印:
----before_first_request----
系统初始化的时候,执行这个钩子方法
会在接收到第一个客户端请求时,执行这里的代码
----before_request----
每一次接收到客户端请求时,执行这个钩子方法
一般可以用来判断权限,或者转换路由参数或者预处理客户端请求的数据
----视图函数----
视图函数被运行了
----after_request----
在处理请求以后,执行这个钩子方法
一般可以用于记录会员/管理员的操作历史,浏览历史,清理收尾的工作
----teardown_request----
在每一次请求以后,执行这个钩子方法,如果有异常错误,则会传递错误异常对象到当前方法的参数中
None
  • 在第2次请求时的打印:
----before_request----
127.0.0.1 - - [08/Apr/2019 09:23:53] "GET / HTTP/1.1" 200 -
每一次接收到客户端请求时,执行这个钩子方法
一般可以用来判断权限,或者转换路由参数或者预处理客户端请求的数据
----视图函数----
视图函数被运行了
----after_request----
在处理请求以后,执行这个钩子方法
一般可以用于记录会员/管理员的操作历史,浏览历史,清理收尾的工作
----teardown_request----
在每一次请求以后,执行这个钩子方法,如果有异常错误,则会传递错误异常对象到当前方法的参数中
None

相关文章

  • 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则是采用...

  • Part A

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

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

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

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

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

  • flask基础(二)

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

  • Flask异常处理使用记录

    Flask异常处理使用记录 初识Flask异常处理,是使用@app.teardown_request钩子函数错处理...

网友评论

      本文标题:Flask——请求钩子

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