Flask-Script
的作用是可以通过命令行的形式来操作Flask
。例如通过命令跑一个开发版本的服务器、设置数据库,定时任务等。要使用Flask-Script
,可以通过pip install flask-script
安装最新版本。首先看一个最简单的例子:
# manage.py
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
了。
### 命令的添加方式:
1. 使用`manage.command`:这个方法是用来添加那些不需要传递参数的命令。示例代码如下:
```python
manager = Manager(app)
manager.add_command("db",db_manager)
@manager.command
def greet():
print('你好')
```
2. `使用manage.option`:这个方法是用来添加那些需要传递参数的命令。有几个参数就需要写几个`option`。示例代码如下:
```python
@manager.option("-u","--username",dest="username")
@manager.option("-e","--email",dest="email")
def add_user(username,email):
user = BackendUser(username=username,email=email)
db.session.add(user)
db.session.commit()
```
3. 如果有一些命令是针对某个功能的。比如有一堆命令是针对ORM与表映射的,那么可以将这些命令单独放在一个文件中方便管理。也是使用`Manager`的对象来添加。然后到主manage文件中,通过`manager.add_command`来添加。示例代码如下:
db_script.py
```python
from flask_script import Manager
db_manager = Manager()
@db_manager.command
def init():
print('迁移仓库创建完毕!')
@db_manager.command
def revision():
print('迁移脚本生成成功!')
@db_manager.command
def upgrade():
print('脚本映射到数据库成功!')
```
manage.py
```python
from db_script import db_manager
manager = Manager(app)
manager.add_command("db",db_manager)
```