zoukankan      html  css  js  c++  java
  • Flask基础(12)-->请求上下文和应用上下文

    请求上下文和应用上下文

    请求上下文:可以简单理解为客户端与服务器之间数据交互请求的容器

    请求上下文对象有:request、Session

    request:封装了HTTP请求的内容,针对的是http的请求

    Session:用来记录请求回话中的信息,针对的是用户的信息

    应用上下文:应用于存储应用程序中的变量,它的作用主要是帮助request获取当前的应用,它

    是伴随request而生,随request而死

    应用上下文对象有:current_app、g

    current_app存储的变量

    • 应用程序启动的脚本是哪个文件,启动时指定了哪些参数
    • 加载了哪些配置文件,导入了哪些配置
    • 连接了那个数据库
    • 有哪些public的工具类、常量
    • 应用跑在哪个机器上,ip是多少,内存是多大

    g变量:

    g作为Flask程序全局的一个临时变量,充当中间媒介的作用,我们可以通过他传递一些数据,

    g保存的是当前请求的全局变量,不同的请求会有不同的全局变量,可以通过不同的thread id区别

    请求上下文和应用上下文的区别

    请求上下文:保存了客户端和服务器交互的数据

    应用上下文:Flask应用程序运行过程中,保存的一些配置信息,比如程序名、数据库连接、应用信息等。

    注意:上下文中的对象只能在指定的上下文中使用,超出范围不能使用。

    请求上下文和应用上下文原理和实现(有兴趣研究的可以参考一下):

    https://segmentfault.com/a/1190000004223296

    下面用代码演示一下请求上下文和应用上下文的用法

    请求上下文:

    from flask import Flask
    from flask import request
    
    app = Flask(__name__)
    
    # print(request.method) # 不存在请求范围之内(也就是说request在视图函数中才有效),所以会报错
    # print(session.get("user_id",""))  # 同样也会报错,错误类型当然也是超出请求范围
    
    @app.route('/')
    def demo1():
        print(request.method)  # 当浏览器请求demo1时,打印出客户端的请求方式
        return 'demo1'
    
    
    if __name__ == '__main__':
        app.run(debug = True)

    应用上下文:

    from flask import Flask
    from flask import current_app
    
    app = Flask(__name__)
    
    
    # print(current_app.config.get("DEBUG"))  #报错,超出应用上下文的范围
    
    @app.route('/')
    def demo1():
        print(current_app.config.get("DEBUG"))  # 打印当前应用程序DEBUG的状态
        return 'demo1'
    
    
    if __name__ == '__main__':
        app.run(debug = True)
  • 相关阅读:
    linux shell
    jsp应用
    JavaScript基础整理(2)
    Struts2验证框架实例
    一个Struts2的实例
    Java继承和多态实例
    VS2010webConfig配置
    html兼容性
    Linux 入门记录:一、命令行 Bash 的基本操作
    微信支付:curl 出错,错误码: 60
  • 原文地址:https://www.cnblogs.com/888888CN/p/9476992.html
Copyright © 2011-2022 走看看