本章主题
关键词
Flask-Script
Flask-Script 的作⽤是可以通过命令⾏的形式来操作 Flask。例如通过命令跑⼀个开发版本的服务器、设置数据库,定时任务等。要使⽤ Flask-Script
,可以通过 pip install flask-script
安装最新版本:
from flask_script import Manager
from your_app import app
manager = Manager(app)
@manager.command
def hello():
print('hello')
if __name__ == '__main__':
manager.run()
我们把脚本命令代码放在⼀个叫做 manage.py
⽂件中,然后在终端运⾏ python_manage.py 的 hello 命令,就可以看到输出 hello
了。
定义命令的三种方法
- 使⽤
@command
装饰器; - 使⽤类继承⾃ Command类;
from flask_script import Command,Manager
from your_app import app
manager = Manager(app)
class Hello(Command):
"prints hello world"
def run(self):
print("hello world")
manager.add_command('hello',Hello())
使⽤类的⽅式,有三点需要注意:
- 必须继承⾃ Command 基类;
- 必须实现
run
⽅法; - 必须通过
add_command
⽅法添加命令。
- 使⽤
option
装饰器:如果想要在使⽤命令的时候还传递参数进去,那么使⽤@option
装饰器更加的⽅便:
@manager.option('-n','--name',dest='name')
def hello(name):
print('hello ',name)
这样,调⽤ hello 命令:
python manage.py -n juran
python manage.py --name juran
添加参数到命令中
option
装饰器:以上三种创建命令的⽅式都可以添加参数,@option
装饰器,已经介绍过了:
@manager.option('-n', '--name', dest='name', default='joe')
@manager.option('-u', '--url', dest='url', default=None)
def hello(name, url):
if url is None:
print("hello", name)
else:
print("hello", name, "from", url)
command
装饰器:command
装饰器也可以添加参数,但是不能那么的灵活:
@manager.command
def hello(name="Fred")
print("hello", name)
- 类继承:类继承也可以添加参数
from flask_Flask import Comman,Manager,Option
class Hello(Command):
option_list = (
Option('--name','-n',dest='name'),
)
def run(self,name):
print("hello %s" % name)
如果要在指定参数的时候,动态的做⼀些事情,可以使⽤ get_options
⽅法:
class Hello(Command):
def __init__(self,default_name='Joe'):
self.default_name = default_name
def get_options(self):
return [
Option('-n','--name',dest='name',default=self.default_n ame),
]
def run(self,name):
print('hello',name)
总结小便条
本篇文章主要讲了以下几点内容:
本章回顾暂时就到这了,如果还有点晕,那就把文章里所有引用的案例代码再敲几遍吧。拜拜~