请求勾子

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

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

  请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子:
    ①before_first_request
      在处理第一个请求前执行
    ②before_request
      在每次请求前执行
      如果在某修饰的函数中返回了一个响应,视图函数将不再被调用
    ③after_request
      如果没有抛出错误,在每次请求后执行
      接受一个参数:视图函数作出的响应
      在此函数中可以对响应值在返回之前做最后一步修改处理
      需要将参数中的响应在此参数中进行返回

      例如设置csrf_token可以在请求后设置在response里。
    ④teardown_request:
      在每次请求后执行
      接受一个参数:错误信息,如果有相关错误抛出

  代码测试:

      from flask import Flask

      from flask import abort

      app = Flask(__name__)
      

      # 在第一次请求之前调用,可以在此方法内部做一些初始化操作
      @app.before_first_request
      def before_first_request():
        print("before_first_request")
      

      # 在每一次请求之前调用,这时候已经有请求了,可能在这个方法里面做请求的校验
      # 如果请求的校验不成功,可以直接在此方法中进行响应,直接return之后那么就不会执行视图函数
      @app.before_request
      def before_request():
        print("before_request")

      

      # 在执行完视图函数之后会调用,并且会把视图函数所生成的响应传入,可以在此方法中对响应做最后一步统一的处理

      @app.after_request
      def after_request(response):
        print("after_request")
        response.headers["Content-Type"] = "application/json"

        return response

      # 请每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息
      @app.teardown_request
      def teardown_request(e):
        print("teardown_request")

      @app.route('/')
      def index():
        return 'index'

      if __name__ == '__main__':
        app.run(debug=True)

    在第1次请求时的打印:

      before_first_request

      before_request
      after_request
      teardown_request

    在第2次请求时的打印

    before_request

    after_request

    teardown_request

flask中请求勾子的更多相关文章

  1. Flask中请求数据的优雅传递

    当一个请求到来时,浏览器会携带很多信息发送发送服务端.在Django中,每一个处理函数都要传入一个request的参数,该参数携带所有请求的信息,也就是服务端程序封装的environ(不明白该参数可以 ...

  2. Flask 中请求钩子的理解和应用?

    请求钩子是通过装饰器的形式实现的,支持以下四种:1,before_first_request 在处理第一个请求前运行2,before_request:在每次请求前运行3,after_request:如 ...

  3. Flask中路由参数

    Flask中路由参数.请求方式设置 一.参数设置 1.参数类型 Flask中参数的使用 @app.route('/parames/<username>/') def hello_world ...

  4. Flask中本地栈的使用

    4种上下文变量 承接上一篇内容.当一个请求到来时,除了request被封装成全局变量之外,还有三个变量也是同样被封装成全局变量,那就是current_app.g.session.上面4个变量之所以能够 ...

  5. (三)flask中的请求钩子函数

    请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个视图 ...

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

    什么是请求勾子? 为了让每个视图函数避免编写重复的功能代码,flask提供了通用设施的功能,就是所谓的勾子 那么请求勾子就是,在浏览器请求服务器资源的前后挂载相关的处理函数 请求勾子有什么作用? 作用 ...

  7. Python直接改变实例化对象的列表属性的值 导致在flask中接口多次请求报错

    错误原理实例如下: class One(): list = [1, 2, 3] @classmethod def get_copy_list(cls): # copy一份list,这样对list的改变 ...

  8. flask中的上下文_请求上下文和应用上下文

    前引 在了解flask上下文管理机制之前,先来一波必知必会的知识点. 面向对象双下方法 首先,先来聊一聊面向对象中的一些特殊的双下划线方法,比如__call__.__getattr__系列.__get ...

  9. Flask中获取参数(路径,查询,请求体,请求头)

    上一篇中已经讲述了:HTTP协议向服务器传参有几种途径{ 链接 } 在Flask中同样通过这4中传参途径进行归纳: 1. URL中路径参数的获取: 拓展: # 路由参数/路径参数:http://127 ...

随机推荐

  1. time random sys 模块

    time模块 顾名思义就是时间模块 我们在之前就用过一些时间模块 比如你想要让打印的时间延迟就time.sleep() 首先我们知道这是一个时间操作的模块 它可以分为三种模式:时间戳模式.格式化时间模 ...

  2. DB2问题记录本

    1.System.Data.OleDb.OleDbException (0x80004005): 未指定的错误. 场景:部署网站到IIS上,使用oledb连接DB2数据库报错,开发环境正常 解决方案: ...

  3. iOS设计模式 - 外观

    iOS设计模式 - 外观 原理图 说明 1. 当客服端需要使用一个复杂的子系统(子系统之间关系错综复杂),但又不想和他们扯上关系时,我们需要单独的写出一个类来与子系统交互,隔离客户端与子系统之间的联系 ...

  4. POP动画[1]

    POP动画[1] pop动画是facebook扩展CoreAnimation的,使用及其方便:) 1:Spring系列的弹簧效果(两个动画kPOPLayerBounds与kPOPLayerCorner ...

  5. [翻译] MagicPie

    MagicPie Powerful pie layer for creating your own pie view. PieLayer provide great animation with si ...

  6. FTP列出文件列表

    #定义FTP服务器地址$ftpURL = "ftp://192.168.12.6/"#定义登录FTP服务器的账户及密码$username = "testj\adadmin ...

  7. January 04 2017 Week 1st Wednesday

    Nothing happens unless first a dream. 一切始于梦想. I have a dream, one day I can be the expert in this fi ...

  8. [COGS 2066]七十和十七

    2066. 七十和十七 ★★★   输入文件:xvii.in   输出文件:xvii.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 七十君最近爱上了排序算法,于是Ta ...

  9. 如何恢复在Windows 10中被永久删除的照片?

    照片被误删除了需要恢复?这里推荐一款软件:winutilities.使用WinUtilities文件恢复向导允许您通过简单的点击恢复已删除的照片或从Windows 10回收站中恢复被删除的照片. 恢复 ...

  10. Pygame播放声音与音效

    简单学习自小甲鱼视频教学(笔记) 实现功能: 运行后自动播放背景音乐,单击左键播放音效①,单击右键播放音效②, 空格键控制暂停背景音乐与恢复背景音乐,并且实现播放图标的切换. 代码如下: import ...