我正在研究实施蓝图,但遇到了一些障碍.
我的应用程序有3个不同的模块
- 客户端
- 产品
- 订单
在应用程序启动时,我加载了3个全局词典,每个模块一个. 订单模块同时使用客户端和产品字典,不是为了进行更改,而是作为参考.
我该如何将这些全局词典放到每个模块中呢?声明它们,然后将它们加载到每个蓝图中似乎是没有意义的
我正在研究实施蓝图,但遇到了一些障碍.
我的应用程序有3个不同的模块
在应用程序启动时,我加载了3个全局词典,每个模块一个. 订单模块同时使用客户端和产品字典,不是为了进行更改,而是作为参考.
我该如何将这些全局词典放到每个模块中呢?声明它们,然后将它们加载到每个蓝图中似乎是没有意义的
如果您有需要由多个模块(客户、产品和订单)访问的全局词典,则可以考虑使用共享上下文或全局对象来保存这些词典.这样,您不需要在每个Blueprint中分别声明和加载词典.
以下是一种可能的方法:
创建一个单独的模块或文件,我们将其命名为globals.py
,以定义和初始化全局词典.
# globals.py
client_dict = {}
product_dict = {}
order_dict = {}
在主应用程序文件中,导入globals
模块并加载词典.
# main.py
from flask import Flask
from globals import client_dict, product_dict, order_dict
app = Flask(__name__)
client_dict = load_client_data()
product_dict = load_product_data()
order_dict = load_order_data()
# Register your Blueprints or modules here
if __name__ == '__main__':
app.run()
在需要访问这些字典的每个模块或蓝图中,从全局模块导入它们.
# client.py
from flask import Blueprint
from globals import client_dict
client_bp = Blueprint('client', __name__)
……
# product.py
from flask import Blueprint
from globals import product_dict
product_bp = Blueprint('product', __name__)
……
# order.py
from flask import Blueprint
from globals import client_dict, product_dict, order_dict
order_bp = Blueprint('order', __name__)
通过从每个模块或Blueprint中的全局模块导入词典,您可以直接访问和使用它们,而不需要单独声明或加载它们.对一个模块中的词典所做的任何更改都将在其他模块中反映出来,因为它们引用了相同的全局对象.