自定义命令 click

一. click 模块

1. 下载模块

pip3 install click

2. 案例

方式一:

可以做数据库数据初始化...

import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',help='The person to greet.')
def hello(count, name):
    for x in range(count):
        click.echo(f"Hello {name}!")

if __name__ == '__main__':
    hello()


# 1  python3 app.py --count=3
# 2  python3 app.py --help
# 3  python3 app.py --count=3 --name=lqz

方式二:

from flask import Flask
import click

app = Flask(__name__)


@app.cli.command("create-user")
@click.argument("name")
@click.argument("age", default=1)
def create_user(name, age):
    print(name)
    print(age)


@app.route('/')
def index():
    return 'index'


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

# flask --<Flask 对象名> <文件名> create-user lqz 19
flask --app run create-user lqz 19

二. flask-script 模块

版本比较老了,基本上不用了。

1. 下载模块

pip install flask==2.2.2
pip install flask-script==2.0.3

2. 自定义命令

2.1 方式一

from flask import Flask
# 1. 导入模块
from flask_script import Manager
# 2. 创建app
app = Flask("app01")
app.debug = True
# 3. 用 Manager 将 app 包裹一下
manage = Manager(app)

# 4. 对自定义函数添加装饰器 >>> 此函数便具有了以命令行的形式执行
@manage.command
def func_name(arg):
    """
        python main.py func_name 12345    # 执行此命令相当于执行了这个函数
    """
    print(arg)


@app.route('/index')
def index():
    return 'index'


if __name__ == '__main__':
    # 5. 启动要以 manage 启动
    manage.run()

2.1 方式二

类似于关键字参数

@manager.option('-n', '--name', dest='name')
@manager.option('-u', '--url', dest='url')
def func_name(name, url):
    """
       自定义命令(-n也可以写成--name)
       执行: python manage.py  func_name -n lqz -u http://www.oldboyedu.com >>> (简写的方式)
       执行: python manage.py  func_name --name lqz --url http://www.oldboyedu.com
    """
    print(name, url)
posted @ 2023-05-24 13:56  codegjj  阅读(15)  评论(0编辑  收藏  举报