4

我已经使用flask-script 包构建了一个命令行python 脚本来访问一个常规APIRest 服务通过flask 管理的sql 数据库。我在为我的脚本命令设置参数时遇到问题。尤其是:

a) 如何在 @manager.options 行中设置默认值

b) 如何设置标志

我尝试过类似以下的方法:

@manager.option('-m', '--credit', dest='credit', default=-1, help='regular value')
@manager.option('--useCredit', dest='useCredit', default=False, help='boolean')
def newClient(credit=100, useCredit=False):

我设法通过将它添加到函数变量来“破解”默认值,但是我不知道@manager.option 中的“默认”参数是什么?另外,useCredit 总是问我一个值,我怎样才能让它成为一个标志?

更新

感谢@carlos的回答,我意识到我一定是测试错了,因为它确实可以在 manager.option 命令中设置默认参数。似乎我在函数定义中放置的任何值 (def newClient(credit=100, useCredit=False) 都被忽略了。我本以为系统会发出一些警告或错误...

4

1 回答 1

2

我不太确定问题出在哪里,但是对您的代码进行快速模拟似乎并没有出现与您的相同的错误:

from flask.ext.script import Manager
from flask import Flask

app = Flask(__name__)

manager = Manager(app)

@manager.option('-m', '--credit', dest='credit', default=-1)
@manager.option('-u', '--use_credit', dest='use_credit', default=False)
def new_client(credit, use_credit):
    if credit is None:
        print "credit is", credit
    else:
        print "credit is", credit, "with use_credit", use_credit

if __name__ == "__main__":
    manager.run()

结果输出:

在此处输入图像描述

于 2015-03-16T06:22:38.990 回答