我有一个Flask服务器,它有两组路由 - 一个集合将数据作为JSON返回,另一个集合将数据作为网页返回。我想为每个集合分别创建一个文件,因此我将使用蓝图。路径功能使用在顶层中实例化的常见对象。如何传递对这些对象的引用,以便路由函数可以看到它们?
请参阅下面的简化示例(仅显示一个蓝图)。我见过类似的问题,但由于我对python的掌握有限,我无法完全理解(例如,我需要所有路由和客户端连接来访问相同的对象实例)。
main.py ...
#!/usr/bin/python
from flask import Flask, Blueprint
from my_routes import *
class Class1():
def __init__(self):
self.prop1=11
. . .
# This object is accessed by both sets of routes
obj1 = Class1()
app = Flask(__name__)
app.register_blueprint(api_v1_0)
app.run()
json_routes.py ...
from flask import Flask, Blueprint
api_v1_0 = Blueprint('api_v1_0', __name__)
@api_v1_0.route("/route1", methods=["GET"])
def route1():
. . .
v1 = obj1.method1() # How does this function get a reference to obj1?
. . .
答案 0 :(得分:1)
要在json_routes中访问obj1
,您必须在json_route文件中声明它的活动引用。
所以你可以做的是在一个单独的文件class1.py中声明和实例化你的对象:
class Class1():
def __init__(self):
self.prop1=11
# This object is accessed by both sets of routes
obj1 = Class1()
在每个路径文件中,您可以像这样获取实例:
from class1 import obj1
你的主文件应该是这样的:
#!/usr/bin/python
from flask import Flask, Blueprint
from my_routes import *
app = Flask(__name__)
app.register_blueprint(api_v1_0)
app.run()