Flask-Scropt插件爲在Flask裏編寫額外的腳本提供了支持。這包括運行一個開發服務器,一個定製的Python命令行,用於執行初始化數據庫、定時任務和其餘屬於web應用以外的命令行任務的腳本。python
(1)用命令pip和easy_install安裝:git
pip install Flask-Script
(2)從github下載最新版本,源碼編譯安裝:github
git clone https://github.com/smurfix/flask-script.git cd flask-script python setup.py develop
第一步須要建立一個能夠運行你腳本命令的Python模塊。你能夠隨意命名它。我這裏就以manage.py爲例。web
在manage.py文件中,須要先建立一個Manager實例。Manager類會跟蹤全部的命令和命令行調用的參數:shell
from flask_script import Manager app = Flask(__name__) # configure your app manager = Manager(app) if __name__ == "__main__": manager.run()
調用manager.run()方法初始化Mnager實例來接收命令行輸入。數據庫
第二步是建立添加自定義命令。建立自定義命令有三種方法:flask
(1) 定義Command類的子類服務器
爲了簡單,咱們就建立一個hello命令來輸出「hello world」:app
from flask_script import Command class Hello(Command): "prints hello world" def run(self): print "hello world"
接下來咱們須要把命令添加到Mannager實例:ide
manager.add_command('hello', Hello())
完整代碼以下:
from flask_script import Manager,Command from flask import Flask app = Flask(__name__) manager = Manager(app) class hello(Command): "prints hello world" def run(self): print("hello world") manager.add_command('hello', hello()) if __name__ == "__main__": manager.run()
使用:
在命令行運行以下命令: (1)$python manage.py hello hello world (2)$python manage.py usage: manage.py [-?] {hello,shell,runserver} ... positional arguments: {hello,shell,runserver} hello prints hello world shell Runs a Python shell inside Flask application context. runserver Runs the Flask development server i.e. app.run() optional arguments: -?, --help show this help message and exit 也能夠經過把包含Command實例的字典做爲manager.run()的參數: manager.run({'hello' : Hello()})
(2)使用@command裝飾器
對於簡單的命令,咱們能夠使用屬於Manager實例的@command裝飾器。
@manager.command def hello(): "Just say hello" print("hello")
其使用方法和前面同樣。
(3)使用@option裝飾器
如何須要經過命令行進行比較複雜的控制,能夠使用Manager實例的@option裝飾器。
@manager.option('-n', '--name', help='Your name') def hello(name): print("hello", name)