Flask Script 扩展提供向 Flask 插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的 Python shell,设置数据库的脚本,cronjobs,及其他运行在 web 应用之外的命令行任务;使得脚本和系统分开;
Flask Script 和 Flask 本身的工作方式类似,只需定义和添加从命令行中被 Manager 实例调用的命令;
官方文档: http://flask-script.readthedocs.io/en/latest/
1,创建并运行命令
首先,创建一个 Python 模板运行命令脚本,可起名为 manager.py;
在该文件中,必须有一个 Manager 实例,Manager 类追踪所有在命令行中调用的命令和处理过程的调用运行情况;
Manager 只有一个参数--Flask 实例,也可以是一个函数或其他的返回 Flask 实例;
调用 manager.run() 启动 Manager 实例接收命令行中的命令;
#-*-coding:utf8-*-
from flask_script import Manager
from debug import app
manager = Manager(app)
if __name__ == '__main__':
manager.run()
其次,创建并加入命令;
2,有三种方法创建命令,即创建 Command 子类,使用 @command 修饰符,使用 @option 修饰符;
1)第一种--创建 Command 子类
Command 子类必须定义一个 run 方法;
举例:创建 Hello 命令,并将 Hello 命令加入 Manager 实例;
from flask_script import Manager ,Server
from flask_script import Command
from debug import app
manager = Manager(app)
class Hello(Command):
'hello world'
def run(self):
print 'hello world'
#自定义命令一:
manager.add_command('hello', Hello())
# 自定义命令二:
manager.add_command("runserver", Server()) #命令是runserver
if __name__ == '__main__':
manager.run()
执行如下命令:
python manager.py hello
> hello world
python manager.py runserver
> hello world
2)第二种--使用 Command 实例的 @command 修饰符
#-*-coding:utf8-*-
from flask_script import Manager
from debug import app
manager = Manager(app)
@manager.command
def hello():
'hello world'
print 'hello world'
if __name__ == '__main__':
manager.run()
该方法创建命令的运行方式和 Command 类创建的运行方式相同;
python manager.py hello
> hello world
3)第三种--使用 Command 实例的 @option 修饰符
复杂情况下,建议使用 @option;
可以有多个 @option 选项参数;
from flask_script import Manager
from debug import app
manager = Manager(app)
@manager.option('-n', '--name', dest='name', help='Your name', default='world') #命令既可以用-n,也可以用--name,dest="name"用户输入的命令的名字作为参数传给了函数中的name
@manager.option('-u', '--url', dest='url', default='www.csdn.com') #命令既可以用-u,也可以用--url,dest="url"用户输入的命令的url作为参数传给了函数中的url
def hello(name, url):
'hello world or hello <setting name>'
print 'hello', name
print url
if __name__ == '__main__':
manager.run()
运行方式如下:
python manager.py hello
>hello world
>www.csdn.com
python manager.py hello -n sissiy -u www.sissiy.com
> hello sissiy
>www.sissiy.com
python manager.py hello -name sissiy -url www.sissiy.com
> hello sissiy
>www.sissiy.com
来源: http://www.bubuko.com/infodetail-2466303.html