如何为 Flask 命令组设置帮助消息?

How to set a help message for a Flask command group?

我正在尝试改编 Flask documentation 中的示例以在组中创建自定义命令:

import click
from flask import Flask
from flask.cli import AppGroup

app = Flask(__name__)
user_cli = AppGroup('user')

@user_cli.command('create')
@click.argument('name')
def create_user(name):
    ...

app.cli.add_command(user_cli)

$ flask user create demo

这似乎工作正常,但是当我 运行 flask --help 我看到列出的命令没有任何帮助消息,例如:

Commands:
  user
  foo
  db             Perform database migrations.

如何向一组命令(在本例中为 'user')添加帮助消息?

使用short_help参数。 AppGroup 继承自 Group,后者继承自 MultiCommand,后者继承自 Command。请参阅 Command 的单击 source code

例如:

import click
from flask import Flask
from flask.cli import AppGroup

user_cli = AppGroup('user', short_help="Adds a user")


@user_cli.command('create')
@click.argument('name')
def create_user(name):
    print(name)


app = Flask(__name__)

app.cli.add_command(user_cli)

@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

给出以下输出(Windows PyCharm 终端):

(flask_cli_group) D:\Paul\PycharmProjects\flask_cli_group>flask
Usage: flask [OPTIONS] COMMAND [ARGS]...

  A general utility script for Flask applications.

  Provides commands from Flask, extensions, and the application. Loads the
  application defined in the FLASK_APP environment variable, or from a
  wsgi.py file. Setting the FLASK_ENV environment variable to 'development'
  will enable debug mode.

    > set FLASK_APP=hello.py
    > set FLASK_ENV=development
    > flask run

Options:
  --version  Show the flask version
  --help     Show this message and exit.

Commands:
  routes  Show the routes for the app.
  run     Run a development server.
  shell   Run a shell in the app context.
  user    Adds a user

(flask_cli_group) D:\Paul\PycharmProjects\flask_cli_group>

如果您使用蓝图创建 CLI 命令,请为 top-level 添加 blueprint_obj.cli.short_help 帮助:

bp_database = Blueprint('bp_database', __name__, cli_group='database')
bp_database.cli.short_help = 'Database utilities'

输出:

Commands:
  database  Database utilities
  run       Run a development server.
  shell     Run a shell in the app context.