Как установить значения по умолчанию в @manager.options в flask-script

Я создал скрипт Python для командной строки, используя пакет flask-script для доступа к базе данных sql, которой управляет обычный сервис APIRest через флягу. У меня проблемы с настройкой параметров для моих команд сценария. Особенно:

а) Как установить значение по умолчанию в строке @manager.options

б) Как установить флаг

Я пробовал что-то вроде следующего:

@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), игнорируются. Я бы ожидал некоторого предупреждения или ошибки системы...

1 ответ

Я не совсем уверен, в чем проблема, но быстрое копирование вашего кода, похоже, не показывало ту же ошибку, что и ваша:

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()

Полученный результат:

введите описание здесь

Другие вопросы по тегам