zoukankan      html  css  js  c++  java
  • flask 上下文

    flask 上下文

    Flask中有两种上下文:请求上下文(request context)应用上下文(application context)

    两者作用:
    请求上下文(request context):
    Flask从客户端收到请求时,要让视图函数能访问一些对象,这样才能处理请求。请求对象是一
    个很好的例子,它封装了客户端发送的HTTP 请求。
    要想让视图函数能够访问请求对象,一个显而易见的方式是将其作为参数传入视图函数,不过
    这会导致程序中的每个视图函数都增加一个参数,除了访问请求对象,如果视图函数在处理请求时还
    要访问其他对象,情况会变得更糟。为了避免大量可有可无的参数把视图函数弄得一团糟,Flask
    使用上下文临时把某些对象变为全局可访问。

    应用上下文(application context):
    它的字面意思是 应用上下文,但它不是一直存在的,它只是requestcontext 中的一个对 app
    的代理(人),所谓localproxy。它的作用主要是帮助 request 获取当前的应用,它是伴 request 而
    生,随 request 而灭的。

    请求上下文:

    from flask import Flask, request
    
    app = Flask(__name__)
    
    rq = request.method
    
    @app.route('/')
    def hello_world():
        print(request.method)
        return 'Hello World!'
    
    if __name__ == '__main__':
        app.run(debug=True)

     执行一下就会发现

    浏览器的每一次请求都会被封装为一个请求对象 而每一次请求封装的对象是不一样的所以会报错

    错误原因实在请求上下文工作之外 因此可以看出他只能在视图函数中运行

    应用上下文:

    from flask import Flask, current_app
    
    app = Flask(__name__)
    
    print(current_app.config.get("DEBUG"))
    
    @app.route('/')
    def hello_world():
        print(current_app.config.get("DEBUG"))
        return 'Hello World!'
    
    if __name__ == '__main__':
        app.run(debug=True)

     执行一下又会发现

      

      这个错误表示我们在应用上下文之外工作 其实错误原因就是因为你要接受到一个请求你才能打印他的DEBUG信息

  • 相关阅读:
    【转】iOS WKWebView基本使用总结
    【转】让JS在Android/iOS WebView中反调接口统一,调用更容易
    关于Xcode的Other Linker Flags
    SonarQube+Jenkins+Cppcheck实现C++代码扫描
    YAPI工具配置LDAP统一用户认证
    LDAP脚本批量导出用户
    软件配置库备份之删除指定日期前的备份文件
    软件测试中测试环境独立性的原因
    [SVN]TortoiseSVN工具培训5─常见问题解决
    [SVN]TortoiseSVN工具培训4─客户端常用操作命令
  • 原文地址:https://www.cnblogs.com/love2000/p/13650941.html
Copyright © 2011-2022 走看看