Flask_Flask-Script脚本扩展的使用(八)

Flask-Script扩展包提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任务;使得脚本和系统分开;

使用Flask-Script扩展包前,需要使用下面命令进行安装

pip install Flask-Script

Flask-Script工作方式和Flask本身类似,只需定义和添加从命令行中被Manager实例调用的命令;

官方文档:http://flask-script.readthedocs.io/en/latest/

一、基本运用

首先,创建一个Python模板运行命令脚本,可起名为manager.py;

在该文件中,必须有一个Manager实例,Manager类追踪所有在命令行中调用的命令和处理过程的调用运行情况;

Manager只有一个参数——Flask实例,也可以是一个函数或其他的返回Flask实例;

调用manager.run()启动Manager实例接收命令行中的命令;

from flask import Flask
from flask_script import Manager    # 启动命令的管理类


app = Flask(__name__)
# 创建Manager管理类的对象
manager = Manager(app)


@app.route("/index/")
def index():
    return "hello flask"


if __name__ == '__main__':
    # 通过管理对象来启动flask
    manager.run()

创建好manager.py文件后,不能直接通过启动文件来运行,需要在系统的命令行中通过命令启动。

上图中通过 runserver 命令启动了服务

上图中通过shell命令,进入了flask的交互模式。

我们可以通过 --help查看其它可用命令

 

 并且可以通过 命令+ --help查看每个命令的可用参数

二、自定义命令

除了 runserver和shell命令,我们还可以创建自定义命令,有三种创建命令的方法:

  1. 创建Command子类
  2. 使用 Manager 实例的@command修饰符
  3. 使用 Manager 实例的@option修饰符

2.1 创建Command子类

Command子类必须定义一个run方法

举例:创建Hello命令,并将Hello命令加入Manager实例;

from flask import Flask
from flask_script import Manager    # 启动命令的管理类
from flask_script import Command

app = Flask(__name__)
# 创建Manager管理类的对象
manager = Manager(app)

# 1.创建Command子类,并且必须定义一个run方法
class Hello(Command):
    def run(self):
        print("hello flask")

# 自定义命令
manager.add_command("hello", Hello())   # hello为命令行的启动命令,Hello()为命令调用的类



if __name__ == '__main__':
    # 通过管理对象来启动flask
    manager.run()

运行自定义命令

自定义命令也可以通过 --help查看

2.2 使用 Manager 实例的@command修饰符

from flask import Flask
from flask_script import Manager    # 启动命令的管理类


app = Flask(__name__)
# 创建Manager管理类的对象
manager = Manager(app)


# 2.使用Command实例的@command修饰符
@manager.command
def hi():
    print("hi flask")


if __name__ == '__main__':
    # 通过管理对象来启动flask
    manager.run()

2.3 使用 Manager 实例的@option修饰符

from flask import Flask
from flask_script import Manager    # 启动命令的管理类


app = Flask(__name__)
# 创建Manager管理类的对象
manager = Manager(app)


# 3.使用 Manager 实例的@option修饰符
@manager.option('-n', '--name', dest='name', help='Your name', default='zhangsan')
# 解释:
#   -n:参数的简写
#   --name:参数全称
#   dest="name":用户在参数后的输入值传递给函数中的name
#   help='Your name':使用--help查看时的参数解释
#   default='zhangsan':用户不使用参数时的默认值
@manager.option('-a', '--age', dest='age', help='Your age', default='18')
def say(name, age):
    print(F"{name}:{age}")


if __name__ == '__main__':
    # 通过管理对象来启动flask
    manager.run()

 附码:

from flask import Flask
from flask_script import Manager    # 启动命令的管理类
from flask_script import Command

app = Flask(__name__)
# 创建Manager管理类的对象
manager = Manager(app)


# 自定义命令一共3中方法
# 1.创建Command子类,并且必须定义一个run方法
class Hello(Command):
    def run(self):
        print("hello flask")


# 自定义命令
manager.add_command("hello", Hello())   # hello为命令行的启动命令,Hello()为命令调用的类


# 2.使用 Manager 实例的@command修饰符
@manager.command
def hi():
    print("hi flask")


# 3.使用 Manager 实例的@option修饰符
@manager.option('-n', '--name', dest='name', help='Your name', default='zhangsan')
# 解释:
#   -n:参数的简写
#   --name:参数全称
#   dest="name":用户在参数后的输入值传递给函数中的name
#   help='Your name':使用--help查看时的参数解释
#   default='zhangsan':用户不使用参数时的默认值
@manager.option('-a', '--age', dest='age', help='Your age', default='18')
def say(name, age):
    print(F"{name}:{age}")


if __name__ == '__main__':
    # 通过管理对象来启动flask
    manager.run()

参考:https://blog.csdn.net/twc829/article/details/52154214

原文地址:https://www.cnblogs.com/testlearn/p/14108149.html