Как установить значения по умолчанию в @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()
Полученный результат: