• g对象


    g对象

    一、g对象

    • 作用: 当请求一个函数时候,可以设置一个变量,提供给全局使用

    二、使用方式一

    from flask import g, Flask, send_file
    
    app = Flask(__name__)
    
    
    @app.before_request
    def request_before():
        
         if request.path == "/login":
            g.name = "randy login"
        # 全局访问
        g.name = 'randy'
        print('before request 设置g对象')
    
    
    @app.route('/')
    def index():
        print(g.name)
        return g.name
    
    # 发送文件
    @app.route('/file')
    def file():
        print('文件下载!')
        return send_file(r'01flask源码分析.py')
    
    if __name__ == '__main__':
        app.run()
     
    

    1577669769281

    三、使用方式二

    def set_g():
        g.name = 'g randy'
    
    
    @app.route('/')
    def index():
        # print(g.name)
        set_g()
        print(g.name)
        return g.name
    
    
    @app.route('/login')
    def login():
        print(g.name)
        return 'ok'
    
    
    if __name__ == '__main__':
        app.run()
    

    1577671029050

    1577671096899

    三、总结

    • @app.before_request设置的g对象可以被全局访问(原因:因为每次请求都会进入被装饰的函数,所以任意请求都可以被访问到),而在其他请求函数中设置g对象则不可以被访问,只能被自己访问(原因:其他函数访问之后并没有创建)所以要想使用g对象,必须先定义之后才可以被访问,并没有做到定义一次全局都可以访问 其实也就是,你使用他,就要提前创建他,使用过之后就会被销毁

    • g对象和session的区别:

      session对象是可以跨request的,只要session还未失效,不同的request的请求会获取到同一个session,但是g对象不是,g对象不需要管过期时间,请求一次就g对象就改变了一次,或者重新赋值了一次

    • 发送文件

      导入 from flask import send_file,然后直接使用,send_file('发送的文件')

  • 相关阅读:
    QtCreator无法编辑源文件
    【Newtonsoft.Json】自己实现JsonConverter ,精简返回的数据结果
    Ghostscript 将PDF文件转换成PNG图片 问题一二
    Nginx--面试基础必会
    Nginx日志配置
    Nginx缓存原理及机制
    Nginx限流
    Nginx 实现 Rewrite 跳转
    Nginx正确配置Location
    渐进深入理解Nginx
  • 原文地址:https://www.cnblogs.com/randysun/p/15518261.html
Copyright © 2020-2023  润新知