教程 / Python3 / Flask 命令行 API

Flask 命令行 API

Flask 命令行 API Flask 基于 Click 构建了命令行工具。通过 flask 命令运行应用和管理任务。 所有 CLI 类都在 flask.cli 模块中。 FlaskGroup Flask 的主命令组。通

Flask 基于 Click 构建了命令行工具。

通过 flask 命令运行应用和管理任务。

所有 CLI 类都在 flask.cli 模块中。


FlaskGroup

Flask 的主命令组。通过 flask 命令使用。

参数 说明
add_default_commands=True 是否添加 run、shell、routes 等默认命令
create_app=None 应用工厂函数,返回 Flask 实例
add_version_option=True 是否添加 --version 选项
load_dotenv=True 是否加载 .env 和 .flaskenv 文件
set_debug_flag=True 是否根据环境变量设置 debug 标志

AppGroup

应用和蓝图的 CLI 命令组基类。通过 app.cli 或 bp.cli 添加自定义命令。

方法 说明
command(*args, **kwargs) 注册 CLI 命令。默认自动包装 with_appcontext
group(*args, **kwargs) 注册子命令组。默认使用 AppGroup 作为组类

AppGroup.command() 默认启用 with_appcontext=True,意味着你的命令函数会自动拥有应用上下文。如果不需要,传 with_appcontext=False。


ScriptInfo

存储脚本运行时的信息,用于加载应用。通常不需要手动操作。

属性 说明
app_import_path 应用导入路径(--app 选项值)
create_app 应用工厂函数
data 任意附加数据字典
load_app() 加载并返回 Flask 应用实例

工具函数

函数 说明
with_appcontext(f) 装饰器。确保被装饰的函数在应用上下文中执行
pass_script_info(f) 装饰器。将 ScriptInfo 实例作为第一个参数传递给函数
load_dotenv(path) 加载 .env 文件中的环境变量

默认命令

命令 说明 常用参数
flask run 启动开发服务器 --host, --port, --debug, --reload/--no-reload
flask shell 启动交互式 Python Shell 自动加载 app、g 等上下文变量
flask routes 列出所有注册的路由 --sort (endpoint/methods/domain/rule/match), --all-methods

标准选项

选项 说明
-A / --app IMPORT 指定应用模块和实例,如 "app:create_app()"
--debug / --no-debug 启用/禁用调试模式
-e / --env-file FILE 指定 .env 文件路径
--version 显示 Flask 和依赖版本

代码示例

实例

from flask import Flask

app = Flask(__name__)

# 注册自定义命令
@app.cli.command("init-db")
def init_db_command():
    """初始化数据库"""
    print("Database initialized.")

# 注册带参数的命令
@app.cli.command("greet")
@app.cli.option("--name", "-n", default="RUNOOB", help="问候对象")
def greet_command(name):
    """发送问候"""
    print(f"Hello, {name}!")

# 注册子命令组
user_cli = app.cli.group("user")

@user_cli.command("list")
def list_users():
    """列出所有用户"""
    print("Listing users...")

@user_cli.command("create")
@user_cli.option("--username", required=True)
def create_user(username):
    """创建新用户"""
    print(f"Creating user: {username}")

# 使用方式:
# flask init-db
# flask greet --name World
# flask user list
# flask user create --username runoob