Flask之flask-script模块 创建命令

版权声明: 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

猜你喜欢

转载自blog.csdn.net/u011361138/article/details/82717855