zoukankan      html  css  js  c++  java
  • 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('发送的文件')

  • 相关阅读:
    C# Split() 去除 分组
    C#获取当前路径的7种方法
    给 C# 开发者的代码审查清单
    【知乎】一句话答案收录集,一句足矣
    C# string和byte[]的转换
    WCF 有零个操作;协定必须至少有一个操作
    WPF中动态改变控件显示位置
    转 将iPhone和Android手机屏幕投影仪投影显示
    转 MySQL数据库监控软件lepus使用问题以及解决办法
    转 Shell中的IFS解惑
  • 原文地址:https://www.cnblogs.com/randysun/p/15518261.html
Copyright © 2011-2022 走看看