Flask内置命令行工具—CLI

应用发现

flask命令在Flask库安装后可使用,使用前需要正确配置FLASK_APP环境变量以告知用户程序所在位置。不同平台设置方式有所不同。

Unix Bash (Linux, Mac, etc.):


$ export FLASK_APP=hello
$ flask run

Windows CMD:


> set FLASK_APP=hello
> flask run

Windows PowerShell:


> $env:FLASK_APP="hello"
> flask run

FLASK_APP环境变量分三部分:一个设置当前工作目录的可选路径,一个python文件或带"."的导入路径,一个可选的应用实例或工厂函数变量名。如果是工厂函数,可以后跟括号传入要接收的参数。

FLASK_APP=src/hello
设置src为当前工作目录,并导入hello

FLASK_APP=hello.web
导入hello.web

FLASK_APP=hello:app2
使用hello中的app2实例

FLASK_APP=hello:create_app(‘dev‘)
使用hello中的工厂函数create_app并传入参数dev

如果未设置FLASK_APP,flask命令会查找wsgi.pyapp.py文件并探测应用实例或工厂函数。flask命令在给定的导入内寻找一个名为app或者application的应用实例,如果找不到会继续寻找任意应用实例。如果找不到任何实例,会接着寻找名为create_app或者make_app的工厂函数,使用该函数返回的实例。

flask run

运行开发服务器。不消说,不要在生产环境使用

flask shell

开启一个交互式的python shell,用来访问或处理应用数据。该指令默认激活应用上下文,并导入应用实例。

只有应用实例是默认导入的,如果需要导入其他对象,使用shell_context_processor装饰函数,返回一个字典对象,键值对表示额外导入的对象。


from exts import db, models

@app.shell_context_processor
def make_shell_context():
    return dict(models=models, db=db)

flask db

执行数据库迁移相关操作。flask db指令不能直接使用,需要获取Migrate实例。


from flask_migrate import Migrate

migrate = Migrate(app, db)

环境

通过FLASK_ENV变量设置Flask应用的运行环境。可选值包括production(默认)和development
如果设置为development,flask命令将激活debug模式,执行flask run会启用交互式调试器和代码自动重载。

DEBUG模式

设置FLASK_ENV为development时,会自动激活debug模式。也可以通过FLASK_DEBUG变量单独控制,1表示启用,0表示禁用

通过dotenv设置环境变量

通过virtualenv设置环境变量

自定义命令

flask命令基于Click库实现。
下列代码演示添加带有name参数的print-user命令:


import click
from flask import Flask

app = Flask(__name__)

@app.cli.command()
@click.argument("name")
def print_user(name):
    print("this is", name)

运行方式:flask print-user root注意这里的指令是print-user,使用print_user会提示没有这个指令,除非显示地在app.cli.command()中传入"print_user"。

下列代码演示了和上面相同的功能,但将打印用户的命令添加到了user命令组。命令组可用于管理多个相关的命令:


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

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

@user_cli.command("print")
@click.argument("name")
def print_user(name):
    print("this is", name)

app.cli.add_command(user_cli)

运行方式:flask user print root

要测试自定义命令,参考Testing CLI Commands

应用上下文

使用Flask应用的.cli.command()装饰器添加的命令在执行时自动推入应用上下文。

如果使用Click的command()装饰器添加命令,执行时不会自动推入应用上下文,要想达到同样的效果,增加with_appcontext装饰器:


import click
from flask import Flask, current_app
from flask.cli import with_appcontext

app = Flask(__name__)

@click.command()
@with_appcontext
def do_work():
    print("do work")
    print(current_app)

app.cli.add_command(do_work)

如果命令不需要在应用上下文中执行,可以显示地禁用:


@app.cli.command(with_appcontext=False)
def do_work():
    pass

插件

略(在setup.py中配置entry_points->flask.commands的值)

自定义脚本

略(针对使用工厂函数生成应用实例的情况,在setup.py中配置entry_points->console_scripts的值)

PyCharm 集成

来源:https://segmentfault.com/a/1190000017436977

原文地址:https://www.cnblogs.com/qixidi/p/10160593.html

时间: 2024-10-31 15:07:06

Flask内置命令行工具—CLI的相关文章

golang开发:类库篇(三)命令行工具cli的使用

为什么要使用命令行 觉得这个问题不应该列出来,又觉得如果初次进行WEB开发的话,可能会觉得所有的东西都可以使用API去做,会觉得命令行没有必要. 其实,一个生产的项目命令行是绕不过去的.比如运营需要导出报表.统计下付费用户.服务不稳定修改下订单状态等等,再者,命令行的工具基本都是内部使用,调试日志可以随意点,退一万步来说,即使有问题了,还可以再次修改.不像API是是随机性的,有些业务发生错误和异常是随机的.不可逆的. 怎么使用cli 这个主要看下使用案例就一目了然了. 首先下载类库包 go ge

Fiddler内置命令行

Fiddler左下角有一个命令框  [基础命令] [举例说明] ? 回车之后,匹配的内容如下图 stop [断点命令] FIddler断点功能就是将请求截获下来,但是不发送,这个时候你可以干很多事情,比如说,把包改了,再发送给服务器. [举例说明] bpafter www.baidu.com  中断 www.baidu.com的请求 bpafter  解除中断 原文地址:https://www.cnblogs.com/happy-xiaoxiao/p/9938344.html

安装vue命令行工具(CLI),npm WARN

安装vue-cli的时候,npm给出警告: npm WARN deprecated [email protected]: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0 解决方案: 降低npm版本 sudo npm install -g [email protected

巧用命令行工具UCloud CLI,轻量操作API管理云资源

截止目前,UCloud已提供Python/Java/Golang等不同语言的API SDK.为进一步降低用户的运维人力投入,又推出了基于Golang SDK的命令行工具CLI(Command Line Interface),提供轻量化的API命令行调用方式,并在GitHub开源(https://github.com/ucloud/ucloud-cli).CLI的命令行交互方式更符合研发运维的操作习惯,并且一些典型使用场景通过CLI也更容易代码化的沉淀和维护. 下面是一些用户遇到的实际场景, 用C

Apache Kafka系列(二) 命令行工具(CLI)

Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka命令行工具(Command Line Interface,CLI),下文简称CLI. 1. 启动Kafka 启动Kafka需要两步: 1.1. 启动ZooKeeper [[email protected] kafka_2.12-0.11.0.0]# bin/zookeeper-server-start.sh config/zookeeper.properties 1.2.

Vue命令行工具(CLI)使用

前言 Vue命令行工具(CLI),快速搭建大型单页应用,今天试了试手,列在这里: 一.搭建项目步骤 根据这里提供的命令行,一步步进行操作,每行是一条单个命令,依次执行 # 全局安装 vue-cli $ npm install --global vue-cli # 创建一个基于 webpack 模板的新项目 $ vue init webpack myding-project # 安装依赖,走你 $ cd myding-project $ npm install $ npm run dev 二.项目

Apache Commons CLI 开发命令行工具示例

概念说明Apache Commons CLI 简介 虽然各种人机交互技术飞速发展,但最传统的命令行模式依然被广泛应用于各个领域:从编译代码到系统管理,命令行因其简洁高效而备受宠爱.各种工具和系统都 提供了详尽的使用手册,有些还提供示例说明如何二次开发.然而关于如何开发一个易用.强壮的命令行工具的文章却很少.本文将结合 Apache Commons CLI,通过一个完整的例子展示如何准备.开发.测试一个命令行工具.希望本文对有相关需求的读者能有所帮助.      Apache Commons CL

windows下的命令行工具babun

什么是babun babun是windows上的一个第三方shell,在这个shell上面你可以使用几乎所有linux,unix上面的命令,他几乎可以取代windows的shell.用官方的题目说就是A Windows shell you will love! babun的几个特点 使用babun无需管理员权限先进的安装包管理器(类似于linux上面的apt-get或yum)预先配置了Cygwin和很多插件拥有256色的兼容控制台HTTP(S)的代理支持面向插件的体系结构可以使用它来配置你的gi

mac内置的FTP工具

在 Mac OS X 系统下,有不少优秀的 FTP 工具,如 Cyberduck.Transmit,但是你是否知道除了这些第三方应用,系统已经为你准备好了一个内置的 FTP 工具?/ M: e0 J% ?( n4 m 七度苹果电脑软件+ N5 w+ F2 H0 X- ` 七度苹果电脑软件从 Finder 菜单栏中进入“前往 - 连接服务器...”(快捷键 Cmd + K)- J0 ^- q" r. t 七度苹果电脑软件输入 FTP 服务器地址(如:ftp://ftp.mozilla.org)点击