美文网首页
Flask——上下文

Flask——上下文

作者: Gavininn | 来源:发表于2019-05-30 14:37 被阅读0次

    上下文:即语境,语意,在程序中可以理解为在代码执行到某个时刻,根据之前代码锁做的操作以及下文即将要执行的逻辑,可以决定在当前时刻下可以使用到的变量,或者可以做的事情。

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

    Flask中上下文对象:相当于一个容器,保存了Flask程序运行过程中的一些信息。

    1.application指的是当你调用app = flask(name)创建的这个对象app。
    2.request指的是每次http请求发生时,WSGI server(比如gunicorn)调用Flask._call_()之后,在Flask对象内部创建的Request对象;
    3.application表示用于相应WSGI请求的应用本身,request表示没出http请求;
    4.appliacation的生命周期大于request,一个application存活期间,可能发生多次http请求,所以,也就会有多个request;

    请求上下文(request context):在Flask中,可以直接在视图函数中使用request这个独享进行获取先关数据,而request就是请求上下文的对象,保存了当前本次请求的相关数据,请求上线文对象有:request、session

    request:封装了HTTP请求的内容,针对的是http请求。例如:user = request.args.get('user'),获取的是get请求的参数。

    session:用来记录请求会话中的信息,针对的是用户信息。例如:session['name'] = user.id 科可以记录用户信息。还可以通过session.get('name')获取用户信息。

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

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

    current_app:应用程序上下文,用于存储应用程序中的变量,可以通过current_app.name打印当前app的名称,也可以在current_app中存储一些变量,例如:

    • 应用的启动脚本是哪个文件,启动时指定了哪些参数
    • 加载了哪些配置文件,导入了哪些配置
    • 连接了哪个数据库
    • 有哪些可以调用的工具类、常量
    • 当前flask应用在哪个机器上,哪个IP上运行,内存多大
    current_app.name
    current_app.test_value='value'
    

    g变量:g 作为 flask 程序全局的一个临时变量,充当者中间媒介的作用,我们可以通过它传递一些数据,g 保存的是当前请求的全局变量,不同的请求会有不同的全局变量,通过不同的thread id区别

    g.name='abc'
    

    注意:不同的请求,会有不同的全局变量

    两者的区别:

    • 请求上下文:保存了客户端和服务器交互的数据
    • 应用上下文:flask 应用程序运行过程中,保存的一些配置信息,比如程序名、数据库连接、应用信息等

    相关文章

      网友评论

          本文标题:Flask——上下文

          本文链接:https://www.haomeiwen.com/subject/ujtvtctx.html