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