flask擴展 -- flask-script
阿新 • • 發佈:2018-01-11
cati 方法 color pen 通過 conf flask 通過命令 裝飾器
Flask-Scropt插件:為在Flask裏編寫額外的腳本提供了支持。這包括運行一個開發服務器,一個定制的Python命令行,用於執行初始化數據庫、定時任務和其他屬於web應用之外的命令行任務的腳本。
一. 使用 Flask-Script 支持命令行選項
1.安裝
$ pip install flask-script
2.創建並運行命令行
第一步需要創建一個可以運行你腳本命令的Python模塊。你可以隨意命名它。我這裏就以manage.py為例。
在manage.py文件中,需要先創建一個Manager實例。Manager類會跟蹤所有的命令和命令行調用的參數:
from flask_script import Manager app = Flask(__name__) # configure your app manager = Manager(app) if __name__ == "__main__": manager.run()
二. 添加自定義命令
創建自定義命令的三種方式:
- 定義Command類的子類
- 使用@command裝飾器
- 使用@option裝飾器
(1) 定義Command類的子類
為了簡單,我們就創建一個hello命令來輸出“hello world”:
from flask_script import Command class Hello(Command): "prints hello world" def run(self): print "hello world"
接下來需要把命令添加到Mannager實例:
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)
flask擴展 -- flask-script