Python 使用Flask初始化路由中使用的对象

Python 使用Flask初始化路由中使用的对象,python,flask,Python,Flask,我正在使用Flask服务器,我想初始化一些对象,并使它们在路由中可见 在导入和路由定义之间不要有太多代码将是非常好的 最好的方法是什么?下面是一个名为object的对象示例。这个例子很有效,但我相信有更好的方法 也许给Flask(\uuuu name\uuuuu)提供一些参数是可行的,但不确定如何做到这一点 从烧瓶导入烧瓶 #我能在这里提供一些关于对象o的参考资料吗? app=烧瓶(名称) 类对象: 定义初始化(自): self.value=2 #我希望避免在两个代码之间填充太多代码 #路线的导

我正在使用Flask服务器,我想初始化一些对象,并使它们在路由中可见

在导入和路由定义之间不要有太多代码将是非常好的

最好的方法是什么?下面是一个名为
object
的对象示例。这个例子很有效,但我相信有更好的方法

也许给Flask(\uuuu name\uuuuu)提供一些参数是可行的,但不确定如何做到这一点

从烧瓶导入烧瓶
#我能在这里提供一些关于对象o的参考资料吗?
app=烧瓶(名称)
类对象:
定义初始化(自):
self.value=2
#我希望避免在两个代码之间填充太多代码
#路线的导入和定义。
o=对象()
@应用程序路径(“/”)
def hello_world():
#我需要对象在这个范围内。
#也许用app.o或类似的软件?
世界,你好!{o.value}'
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
#理想情况下,o=Object()的定义在这里,应用程序将其公开。
app.run()

您当前的方式正是我启动Flask应用程序时所采用的方式。只要应用程序不是太大,就在一个文件中保持简单

根据您需要
o
的位置,您可以在路由中直接实例化它

如果您的应用程序增长,您可以将“数据提供者”移动到单独的模块中,并从中导入

@app.route('/')
def hello_world():
    # I need the object to be in this scope. 
    # Maybe with app.o or something similar?
    return f'Hello, World! {o.value}'
关于您的在线问题/评论:

# Could I give some references of the object o here?
app = Flask(__name__) 
不可以。您可以传入单独的模板目录或类似的目录,但没有路由数据

# I would like to avoid stuffing too much code between 
# the imports and the definitions of the routes.
o = Object() 
正如所建议的,现在还可以,如果代码太多,请将其移动到另一个模块并从那里导入

@app.route('/')
def hello_world():
    # I need the object to be in this scope. 
    # Maybe with app.o or something similar?
    return f'Hello, World! {o.value}'
您还可以在路由中实例化“数据源”对象

if __name__ == '__main__':
    # Ideally the definition of o = Object() goes here and app exposes it.
    app.run()

不要在这里添加任何代码,因为测试非常困难(如果您开始编写测试)。

您当前的方式正是我启动Flask应用程序时要做的。只要应用程序不是太大,就在一个文件中保持简单

根据您需要
o
的位置,您可以在路由中直接实例化它

如果您的应用程序增长,您可以将“数据提供者”移动到单独的模块中,并从中导入

@app.route('/')
def hello_world():
    # I need the object to be in this scope. 
    # Maybe with app.o or something similar?
    return f'Hello, World! {o.value}'
关于您的在线问题/评论:

# Could I give some references of the object o here?
app = Flask(__name__) 
不可以。您可以传入单独的模板目录或类似的目录,但没有路由数据

# I would like to avoid stuffing too much code between 
# the imports and the definitions of the routes.
o = Object() 
正如所建议的,现在还可以,如果代码太多,请将其移动到另一个模块并从那里导入

@app.route('/')
def hello_world():
    # I need the object to be in this scope. 
    # Maybe with app.o or something similar?
    return f'Hello, World! {o.value}'
您还可以在路由中实例化“数据源”对象

if __name__ == '__main__':
    # Ideally the definition of o = Object() goes here and app exposes it.
    app.run()

不要在这里放更多的代码,因为这很难测试(如果您开始编写测试)。

我在python 3.7上运行的代码中没有错误我得到了输出你好,世界!2代码可以工作(如描述中所述),但我相信有更好的方法可以做到这一点,即在导入和路由定义之间不要填充太多代码。至于我,您使用的是最好的方法。最终,您可以将
类对象
o=Object()
放在其他文件中,并使用来自其他导入对象的
,o
但我只会将类放在其他文件中,并在当前文件中使用
o=Object()
。@furas感谢您的反馈。如果这是最好的方法,我就用它。我在Python3.7上运行的代码中没有错误。我得到了输出你好,世界!2代码可以工作(如描述中所述),但我相信有更好的方法可以做到这一点,即在导入和路由定义之间不要填充太多代码。至于我,您使用的是最好的方法。最终,您可以将
类对象
o=Object()
放在其他文件中,并使用来自其他导入对象的
,o
但我只会将类放在其他文件中,并在当前文件中使用
o=Object()
。@furas感谢您的反馈。如果这是最好的办法,我就用它。