【问题标题】:Flask-Script add_option method not workingFlask-Script add_option 方法不起作用
【发布时间】:2014-08-02 14:29:34
【问题描述】:

使用flask-script 的add_option 方法我试图将配置文件的名称传递到我的create_app(),以便我可以配置from_pyfile() -- Flask Instance Folders

我使用这个gist 来帮助我开始。

manage.py

from fbone import create_app

app = create_app()
manager = Manager(app)
manager.add_option('-c', '--config', dest='config', required=False)

app.py

def create_app(config=None, app_name=None, blueprints=None):
    """Create a Flask app."""

    print config

这只是我的create_app 函数的一个 sn-p,但我正在像这样启动应用程序:

$ python manage.py -c config/heroku.cfg runserver
None
/env/lib/python2.7/site-packages/flask_script/__init__.py:153: UserWarning: Options will be ignored.
* Running on http://127.0.0.1:5000/
* Restarting with reloader
None

如您所见,不是打印config/heroku.cfg,而是打印None 我认为这是因为烧瓶脚本中的UserWarning,但我不知道为什么会这样。

【问题讨论】:

  • 好的。根据文档“为此,必须使用工厂函数而不是 Flask 实例初始化管理器。否则您设置的任何选项都将被忽略。”但我已经这样做了。

标签: python flask flask-script


【解决方案1】:

事实证明,您是通过调用 create_app()(带括号)来创建烧瓶对象的。

如果你这样做

app=create_app

Manager(create_app)

那么你应该可以使用 add_option()

【讨论】:

  • 出于逻辑原因默认为Noneadd_option 方法应该将标志后面的参数传递给定义的dest,在本例中为config。如果我弄错了,请扩大您的答案。
  • 除非缺少一些相关代码...我只是按照代码流。当默认为无时,您正在打印configadd_optioncreate_app() 中执行 print 语句之后调用。
  • add_optioncreate_app 之后未被“调用”。 create_app 是传递给 manage.py 的应用程序工厂。 Flask-Script(或Manager 对象)有一组默认命令,例如runserver,您可以使用add_options 来执行这些命令,然后它将实例化应用程序(在这种情况下使用工厂)并传递这些命令选项作为参数。
  • app = create_app() create the app with no params, printing None for config manager = Manager(app) wrap manager around the app previously created manager.add_option('-c', '--config', dest='config', required=False) add_option called after create_app...
  • 有同样的问题,OP。奇怪的是文档并没有非常明确地指出它,即使前面的所有示例都像您的原始代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
  • 1970-01-01
相关资源
最近更新 更多