Рубрики
Без рубрики

Флэк команда командной строки – образец с открытым исходным кодом

В статье описывается, как добавить пользовательские команды в верхней части Flask CLI (интерфейс командной строки) – бесплатный образец включен. Теги с WebDev, колбой, Python, appseed.

Hello Coders,

В данной статье представлена проект Flask Prommance, который реализует пользовательские команды на вершине Флэк команда команд интерфейс. Пользовательские команды могут быть полезны для реализации задач технического обслуживания, проверьте состояние приложения в производстве или просто загружать новые записи в базу данных, используя файл JSON в качестве ввода. Код, доступный на GitHub, может быть продлен с легкостью, чтобы охватить более полезные случаи использования.

Спасибо! Содержание, предоставленное Генератор приложений Отказ

Как использовать код

Код выборки может быть скомпилирован несколькими командами, набирающимися в терминале, если среда Python3 работает и работает на нашем рабочем пространстве. Первый шаг – клонировать проект:

$ # Get the code
$ git clone https://github.com/app-generator/flask-command-line.git
$ cd flask-command-line

Установите модули и настроить среду:

$ # Virtualenv modules installation (Unix based systems)
$ virtualenv env
$ source env/bin/activate
$ 
$ # Install dependencies
$ pip3 install -r requirements.txt
$ 
$ export FLASK_APP=run.py

На данный момент приложение готово к выполнению, и мы можем перечислить зарегистрированные (новые) команды:

$ # List the new commands 
$ flask commands
Usage: flask commands [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  cfg    List all Config Variables   <-- NEW Command
  hello  Simple Hello                <-- NEW Command

Узел «Команды» показывают две команды, которые мы можем вызывать и проверять результаты:

$ flask commands hello
Custom command - Hello               <- The Output 

Наша первая команда довольно проста: печатает сообщение «Hello». Код можно найти в « Команды » Чертеж:

@commands.cli.command('hello')
def hello():
    """ Simple Hello """
    print("Custom command - Hello")

Со второй пользовательской командой мы приближаемся к чему-то полезному: перечислите переменные конфигурации и, необязательно, фильтруйте выходные данные с помощью входной строки.

Вот код – определен в том же файле ( commands.py ):

@commands.cli.command('cfg')
@click.argument('filter', required=False)
def config(filter=None):
    """ List all Config Variables """
    print("Custom command - Cfg(Filter="+str(filter)+")")
    for key in current_app.config:

        val = str( current_app.config[key] )

        # Filtered config
        if filter:    
            if re.search(filter, key, re.IGNORECASE):
                print (  '  |- ' + key  + ' -> ' + val )

        # Unfiltered config
        else:
            print (  '  |- ' + key  + ' -> ' + val )

Приведенный выше код прочитал дополнительный параметр «Фильтр» и итерации по переменным конфигурации приложений. Если параметр «FILTER» определяется, только клавиши, которые соответствуют фильтру, перечислены.

Пользовательская команда

$ # Unfiltered output (list all keys)
$ flask commands cfg

Выход

Custom command - Cfg(Filter=None)
  |- ENV -> production
  |- DEBUG -> False
  |- TESTING -> False
  |- PROPAGATE_EXCEPTIONS -> None
  |- PRESERVE_CONTEXT_ON_EXCEPTION -> None
  |- SECRET_KEY -> S3cr3t_K#Key
  |- PERMANENT_SESSION_LIFETIME -> 31 days, 0:00:00
  |- USE_X_SENDFILE -> False
  |- SERVER_NAME -> None
  |- APPLICATION_ROOT -> /
  |- SESSION_COOKIE_NAME -> session
  |- SESSION_COOKIE_DOMAIN -> None
  |- SESSION_COOKIE_PATH -> None
  |- SESSION_COOKIE_HTTPONLY -> True
  |- SESSION_COOKIE_SECURE -> False
  |- SESSION_COOKIE_SAMESITE -> None
...
(truncated output)

Чтобы увидеть фильтрованные клавиши конфигурации, мы должны предоставить дополнительный входной параметр.

Пользовательская команда

$ # Filter ouput that matches `database`  
$ flask commands cfg database

Выход

Custom command - Cfg(Filter=database)
  |- SQLALCHEMY_DATABASE_URI -> sqlite:///...\flask-command-line-blueprints\db.sqlite3

Давайте выделим все параметры конфигурации с «JSON» в своих именах:

Пользовательская команда

$ # Filter ouput that matches `JSON`
$ flask commands cfg JSON

Выход

Custom command - Cfg(Filter=JSON)
  |- JSON_AS_ASCII -> True
  |- JSON_SORT_KEYS -> True
  |- JSONIFY_PRETTYPRINT_REGULAR -> False
  |- JSONIFY_MIMETYPE -> application/json

С этого момента код может быть продлен с легкостью для выполнения других полезных задач:

  • Удалить неактивные учетные записи пользователей
  • Извлечь информацию о продажах и другую полезную статистику
  • Уведомить пользователей относительно новых продуктов и обновлений

Спасибо за чтение! Для дальнейшего ресурса, пожалуйста, доступа к:

Оригинал: “https://dev.to/sm0ke/flask-command-line-open-source-sample-34m9”