Python+Flask.0013.FLASK命令接口之内置与扩展其命令接口

内置接口:

说明: 旧版启动APP应用的主机地址,端口,是否开启DEBUG,是否多线程等参数都必须写死在代码中,新版FLASK集成了Click,支持直接在命令行中直接执行FLASK命令启动FLASK应用了,但是缺点是只能在类Linux的系统上使用,在Windows上使用可能会出现failed to create process错误,如果遇到这种问题可使用Flask-Script跨平台命令行管理

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

Usage: flask [OPTIONS] COMMAND [ARGS]...

  This shell command acts as general utility script for Flask applications.

  It loads the application configured (either through the FLASK_APP

  environment variable) and then provides commands either provided by the

  application or Flask itself.

  The most useful commands are the "run" and "shell" command.

  Example usage:

    $ export FLASK_APP=hello

    $ export FLASK_DEBUG=1

    $ flask run

Options:

  --help  Show this message and exit.

Commands:

  db     Perform database migrations.

  run    Runs a development server.

  shell  Runs a shell in the app context.

说明: 可以发现新版FLASK命令行接口非常强大,只需要配置两个环境变量,剩余的直接命令行支持db(内置数据库迁移命令),run(内置app运行指令),shell(内置程序上下文的调试shell),具体指令可以在Linux上尝试flask db/run/shell查看其子命令

 

接口扩展:

说明: 其实FLASK还给我们预留了添加自定义命令的接口app.cli.command(),方便我们扩展flask子命令,如果是Linux工作的同学可以用其完全代替Flask-Script扩展

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# OsChina: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

# 说明: 导入公共模块

import click

from flask import Flask

# 说明: 导入其它模块

app = Flask(__name__)

@app.cli.command()

@click.option('--yes', prompt='Do you want drop exists?', is_flag=True)

def dbcreate(*args, **kwargs):

    click.echo(kwargs)

    if kwargs.get('yes'False):

        click.echo('db create')

    else:

        click.echo('db exists')

@app.cli.command()

@click.option('--yes', prompt='Do you want to continue?', is_flag=True)

def dbdelete(*args, **kwargs):

    click.echo(kwargs)

    if kwargs.get('yes'False):

        click.echo('delete db')

    else:

        click.echo('faild del')

1

2

3

4

5

export FLASK_APP='main.py'

export FLASK_DEBUG=1

flask run -h 0.0.0.0 -p 9000

flask dbdelete

flask dbcreate

说明: 常用的扩展方式首先被装饰的函数最好可以接收不固定参数,因为有可能有选项,选项的数据是通过字典的形式传递进来的,然后使用@app.cli.command()首先基于app程序上下文创建一个以被修饰的函数名为键以其命令及选项为值的字典,而@click.option('--yes', prompt='Do you want to continue?', is_flag=True)修饰器则通过被修饰的函数名在app实例中找到对应字典中的命令对象,然后添加选项,它的第一个参数是选项名,必须以--开头,prompt为提示信息,is_flag表示是否需要[Y/N]的提示标志,默认会将{'yes': True/False}的值传递给被修饰的函数,但是如果不想传递的话可以指定expose_value=False,选项以及选项值传递进去后至于怎么处理就靠自己发挥了~

 

 

登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~

转载于:https://my.oschina.net/learnbo/blog/863903

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值