【问题标题】:Flask pass a variable from apps main file to a blueprint [duplicate]Flask将变量从应用程序主文件传递到蓝图[重复]
【发布时间】:2020-03-24 08:46:07
【问题描述】:

如何将变量从应用程序主文件传递给蓝图

假设我有以下示例应用程序。

#app.py

from flask import Flask
from example_blueprint import example_blueprint

data_to_pass="Hurray, You passed me"
app = Flask(__name__)
app.register_blueprint(example_blueprint)

#Blueprint

from flask import Blueprint

example_blueprint = Blueprint('example_blueprint', __name__)

@example_blueprint.route('/')
def index():
    return "This is an example app"

如何将data_to_pass 传递给蓝图? 有烧瓶内置方式吗? 我试图避免导入整个 app.py 文件……它看起来并不优雅。

【问题讨论】:

    标签: python flask


    【解决方案1】:

    如果它是一个配置变量,那么您可以在您的app.py 中添加这样的app.config['data_to_pass'],在您的blueprint.py 中您可以使用from flask import current_app,然后您可以像这样使用它current_app.config['data_to_pass']。所以代码应该是这样的:

    
    #app.py
    
    from flask import Flask
    from example_blueprint import example_blueprint
    
    data_to_pass="Hurray, You passed me"
    app = Flask(__name__)
    app.config['data_to_pass'] = data_to_pass
    
    app.register_blueprint(example_blueprint)
    
    

    然后在蓝图中,你可以这样读

    #Blueprint
    
    from flask import Blueprint, current_app
    
    example_blueprint = Blueprint('example_blueprint', __name__)
    
    @example_blueprint.route('/')
    def index():
        data_to_pass = current_app.config['data_to_pass']
        return "This is an example app"
    

    这是我认为使用配置变量的最佳方式。

    【讨论】:

    • 我没有那样看..这很聪明...它可能适用于函数...或导入语句吗?
    • 老实说,我没有尝试过,因为,例如函数,我确实从应用程序中导入它们,例如 from app import my_function 和类似的语句。 current_app.config 用于传递变量,如官方documentation中所述
    • 是的,我刚刚阅读了文档...它用于传递配置,这意味着自定义变量不起作用。功能也很明显
    • 是的,用于配置含义变量,但您也可以使用它。或者你甚至可以使用flask.session,因为它也可以在全球范围内使用。但是传递函数......我会提供简单的导入,无论何时何地你需要它。
    • 我会检查烧瓶会话,但我认为我找到了一种以编程方式调用蓝图并将其封装到类中的更好方法。看到答案后,我将我的问题标记为重复。 stackoverflow.com/questions/28640081/… 但是您的方法非常方便...我可以将一个密码和用户名传递给我所有的蓝图 api
    猜你喜欢
    • 2022-12-01
    • 1970-01-01
    • 2019-01-26
    • 2016-10-14
    • 1970-01-01
    • 2016-09-12
    • 2017-06-12
    • 2013-05-18
    • 2016-02-12
    相关资源
    最近更新 更多