• Flask基础(09)-->请求勾子函数


    什么是请求勾子?

    为了让每个视图函数避免编写重复的功能代码,flask提供了通用设施的功能,就是所谓的勾子

    那么请求勾子就是,在浏览器请求服务器资源的前后挂载相关的处理函数

    请求勾子有什么作用?

    作用:在浏览器请求服务器资源的前后挂载相关的处理函数

    比如:1、浏览器请求资源之前,根据需求进行权限校验

       2、请求结束之后,处理数据的交互格式......

    如何使用请求勾子?

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

    • before_first_request
      在处理第一个请求前执行
    • before_request
      在每次请求前执行
      如果在某修饰的函数中返回了一个相应,视图函数将不再被调用
    • after_request
      如果没有抛出错误,在每次请求后执行
      接收一个参数:视图函数做出的响应,
      在此函数中可以 对响应的值在返回之前做最后的一步修改处理
      需要将参数中的响应在此参数中进行返回
    • teardown_request
      在每次请求后执行
      接收一个参数:错误信息,如果有相关错误抛

    总结:请求勾子类似于装饰器,可以在不修改函数内部的逻辑前提下增加逻辑.

    from flask import Flask
    app = Flask(__name__)
    
    
    class Config(object):
        DEBUG = True
    
    
    app.config.from_object(Config)
    
    @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")
        print(response)
        # response可以得到视图函数返回的相关响应数据:<Response 14 bytes [200 OK]>
        # 在此函数中可以对响应的数据做统一的处理
        return  response
    
    @app.teardown_request
    def teardown_request(error):
        """在请求之后会执行,如果请求的函数有异常,会把具体的异常传递到此函数"""
        print("teardown_request")
    
    @app.route('/')
    def hello_world():
        return 'Hello World!!!'
    
    
    if __name__ == '__main__':
        app.run()
  • 相关阅读:
    自学笔记系列:《利用Python 进行数据分析 第二版》 -写在开始之前
    《利用Python 进行数据分析 第二版》 -第4章 NumPy基础:数组与向量化计算
    《利用Python 进行数据分析 第二版》 -第2章 Python语言基础、IPython及Jupyter notebook
    查看tcp连接状态
    持续ping并将结果记录到日志
    同时查看多个日志或数据文件
    找出当前系统CPU使用量较高的进程
    找出当前系统内存使用量较高的进程
    命令或脚本后台运行
    解决find命令报错: paths must precede expression
  • 原文地址:https://www.cnblogs.com/888888CN/p/9474908.html
Copyright © 2020-2023  润新知