如何通过 app.run() 将任意参数传递给 Flask?

Kyl*_*son 7 python flask

我想将一个对象传递给新启动的烧瓶应用程序。我尝试按照问题的解决方案进行操作:how-can-i-make-command-line-arguments-visible-to-flask-routes

编辑

我想从命令行启动 python 脚本中获取一个值。

IE。

$ run python flaskTest.py -a goo
Run Code Online (Sandbox Code Playgroud)

我没有看到这与我试图复制的问题的解决方案之间的区别。 编辑

因此,我尝试了以下方法:

from flask import Flask

app = Flask(__name__)

print('Passed item: ', app.config.get('foo'))

if __name__ == '__main__':
  from argparse import ArgumentParser

  parser = ArgumentParser()
  parser.add_argument('-a')
  args = parser.parse_args()
  val = args.a

  app.config['foo'] = val
  app.run()
Run Code Online (Sandbox Code Playgroud)

希望得到结果...

'Passed item: Goo'
Run Code Online (Sandbox Code Playgroud)

是否有通过 app.run() 初始化传递任意对象的方法?

lee*_*ong 7

那么脚本是从上到下执行的,所以你不能打印你还没有的东西。将打印语句放在经典的烧瓶工厂函数中,您可以先解析命令行,然后获取对象,然后使用它:

from flask import Flask

def create_app(foo):
    app = Flask(__name__)
    app.config['foo'] = foo
    print('Passed item: ', app.config['foo'])
    return app

if __name__ == '__main__':
  from argparse import ArgumentParser
  parser = ArgumentParser()
  parser.add_argument('-a')
  args = parser.parse_args()
  foo = args.a
  app = create_app(foo)
  app.run()
Run Code Online (Sandbox Code Playgroud)