版权声明: https://blog.csdn.net/u011361138/article/details/82717855
Flask-script模块创建命令
有三种方法创建命令,即创建Command子类、使用@command修饰符、使用@option修饰符;
(1) 使用Command子类创建
需要自定义一个类继承Command
类, 并且需要重写run方法, 不能为其他名字, 如果没有重写此方法会报NotImplementedError
错误, 以下是manager.py
文件
from flask import Flask
from flask_script import Manager
from flask_script import Command
app = Flask(__name__)
manager = Manager(app)
class Hello(Command):
"this is hello command desc"
def run(self):
print("hello world")
manager.add_command("hello", Hello()) # 参数一: 命令名, 参数二: 命令对象
if __name__ == "__main__":
manager.run()
执行如下命令:
$ python manager.py hello
> hello world
(2) 使用@command
以下是manager_2.py
文件
from flask import Flask
from flask_script import Manager
from flask_script import Command
app = Flask(__name__)
manager = Manager(app)
@manager.command
def hello():
"this is hello command desc!"
print("hello world")
if __name__ == "__main__":
manager.run()
截图同上
执行如下命令:
$ python manager.py hello
> hello world
(3) 使用@option
以下是manager_3.py
文件
from flask import Flask
from flask_script import Manager
from flask_script import Command
app = Flask(__name__)
manager = Manager(app)
# 将-n与--name与dest="name", 三个参数意思是将后面的参数传给hello方法的name, help是命令参数描述, default是默认值
@manager.option("-n", "--name", dest="name", help="your name", default="world")
def hello(name):
print("hello world")
print("传过来的name:", name)
if __name__ == "__main__":
manager.run()
执行如下命令:
$ python manager_3.py hello
> hello world
> 传过来的name: world$ python manager.py hello -n fanzone
> hello world
> 传过来的name: fanzone$ python manager.py hello –name fanzone
> hello world
> 传过来的name: fanzone
参考文档:
https://flask-script.readthedocs.io/en/latest/
https://www.cnblogs.com/buyisan/p/8270283.html