zoukankan      html  css  js  c++  java
  • flask 的before_request以及after_request

    flask的响应函数前(before_request),以及响应函数后(after_request)

    # flask 的请求扩展,相当于django的中间件
    
    from flask import Flask, request
    
    app = Flask(__name__)
    
    
    # 项目启动后接受到的第一个请求,所要执行的函数,整个项目的第一次,和浏览器没有关系
    @app.before_first_request
    def first():
        print('我是第一次')
    
    
    # 执行响应函数之前,相当于django中的process_request, 在执行响应函数之前做一些事情
    """
    总结:
        请求执行之前的顺序是:谁先注册,谁就先执行
    """
    @app.before_request
    def before1():
        print('我是before1')
        return 'ok'
    """
    注意:如果before_request中有返回值,那后面的before就不会执行,且响应函数也不会执行
            但是after_request任然会全部执行(这里与django不同,django是同级返回)
    """
    
    
    @app.before_request
    def before2():
        print('我是before2')
    
    
    # 响应函数之后执行,相当于django的process_response,在响应函数之后执行的
    """
    总结:
        after_request的执行顺序是:先注册,后执行
    """
    
    @app.after_request
    # after_request必须接受一个参数,参数为response对象,且必须返回
    def after1(response):
        print('响应后的参数', response)
        print('我是after1')
        return response
    
    
    @app.after_request
    def after2(response):
        print('响应后的参数', response)
        print('我是after2')
        return response
    
    
    @app.route('/')
    def index():
        print('我是响应函数')
        return 'ok'
    
    if __name__ == '__main__':
        """
        app.run()启动项目的本质:run_simple(host, port, self, **options)
        self(请求相关,响应相关), self即app对象
        app(请求相关,响应相关),对象加括号会执行__call__方法
        所以我们看app的__call__方法, 发现__call__就直接调用了另一个方法
        所以我们看另一个方法   wsgi_app
        """
        app.__call__()
        app.run()
    
    






  • 相关阅读:
    VS 2005 RDLC报表实现WEB客户端打印(2)
    VS 2005 RDLC报表实现WEB客户端打印(1)
    封装就是一个包装,将包装的内外分为两个空间
    以count或是sum为条件的查询
    DbRulesAuthorizationProvider for .net 2.0
    Asp.net Ajax 'Sys'未定义
    广州网球场地名录
    谷歌 寄语
    深圳市网球场地一览表
    .net 2.0 串口通讯一小例
  • 原文地址:https://www.cnblogs.com/yafeng666/p/12525407.html
Copyright © 2011-2022 走看看