我希望它能将--config
,--loglevel
,--logfile
等常见的应用配置选项添加到我的flask.cli
群组,并从{{{ 1}}在我的app工厂函数中。
{0.1}装饰者显然在0.11之后删除了一个隐藏的提交消息,例如"实现了简化的界面"。
那么......我现在如何添加app-factory-time配置选项?
答案 0 :(得分:2)
现在就知道你是怎么做的:
@click.pass_context
装饰您的app工厂,以便将上下文作为第一个参数。ctx.find_root().params
获取传递给该组的内容。答案 1 :(得分:0)
您可以创建一个app factory并使用@pass_script_info
装饰器向其传递参数,就像这样...
manage.py
#!/usr/bin/env python
import click
import config
from flask import Flask
from flask.cli import FlaskGroup, pass_script_info
def create_app(script_info):
app = Flask(__name__)
if script_info.config_mode:
obj = getattr(config, kwargs["config_mode"])
flask_config.from_object(obj)
...
return app
@click.group(cls=FlaskGroup, create_app=create_app)
@click.option('-m', '--config-mode', default="Development")
@pass_script_info
def manager(script_info, config_mode):
script_info.config_mode = config_mode
if __name__ == "__main__":
manager()
config.py
class Config(object):
TESTING = False
class Production(Config):
DATABASE_URI = 'mysql://user@localhost/foo'
class Development(Config):
DATABASE_URI = 'sqlite:///app.db'
class Testing(Config):
TESTING = True
DATABASE_URI = 'sqlite:///:memory:'
现在在命令行中(运行pip install manage.py
之后,您可以执行manage -m Production run
。