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命令,我们还可以创建自定义命令,有三种创建命令的方法:
- 创建Command子类
- 使用 Manager 实例的@command修饰符
- 使用 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
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步