自定义命令 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)