1. 程式人生 > 實用技巧 >Flask_Flask-Script指令碼擴充套件的使用(八)

Flask_Flask-Script指令碼擴充套件的使用(八)

Flask-Script擴充套件包提供向Flask插入外部指令碼的功能,包括執行一個開發用的伺服器,一個定製的Python shell,設定資料庫的指令碼,cronjobs,及其他執行在web應用之外的命令列任務;使得指令碼和系統分開;

使用Flask-Script擴充套件包前,需要使用下面命令進行安裝

pip install Flask-Script

Flask-Script工作方式和Flask本身類似,只需定義和新增從命令列中被Manager例項呼叫的命令;

官方文件:http://flask-script.readthedocs.io/en/latest/

一、基本運用

首先,建立一個Python模板執行命令指令碼,可起名為manager.py;

在該檔案中,必須有一個Manager例項,Manager類追蹤所有在命令列中呼叫的命令和處理過程的呼叫執行情況;

Manager只有一個引數——Flask例項,也可以是一個函式或其他的返回Flask例項;

呼叫manager.run()啟動Manager例項接收命令列中的命令;

from flask import Flask
from flask_script import Manager    # 啟動命令的管理類


app = Flask(__name__)
# 建立Manager管理類的物件
manager = Manager(app)


@app.route("/index/")
def index(): return "hello flask" if __name__ == '__main__': # 通過管理物件來啟動flask manager.run()

建立好manager.py檔案後,不能直接通過啟動檔案來執行,需要在系統的命令列中通過命令啟動。

上圖中通過 runserver 命令啟動了服務

上圖中通過shell命令,進入了flask的互動模式。

我們可以通過 --help檢視其它可用命令

並且可以通過 命令+ --help檢視每個命令的可用引數

二、自定義命令

除了 runserver和shell命令,我們還可以建立自定義命令,有三種建立命令的方法:

  1. 建立Command子類
  2. 使用Manager例項的@command修飾符
  3. 使用 Manager 例項的@option修飾符

2.1 建立Command子類

Command子類必須定義一個run方法

舉例:建立Hello命令,並將Hello命令加入Manager例項;

from flask import Flask
from flask_script import Manager    # 啟動命令的管理類
from flask_script import Command

app = Flask(__name__)
# 建立Manager管理類的物件
manager = Manager(app)

# 1.建立Command子類,並且必須定義一個run方法
class Hello(Command):
    def run(self):
        print("hello flask")

# 自定義命令
manager.add_command("hello", Hello())   # hello為命令列的啟動命令,Hello()為命令呼叫的類



if __name__ == '__main__':
    # 通過管理物件來啟動flask
    manager.run()

執行自定義命令

自定義命令也可以通過 --help檢視

2.2使用Manager例項的@command修飾符

from flask import Flask
from flask_script import Manager    # 啟動命令的管理類


app = Flask(__name__)
# 建立Manager管理類的物件
manager = Manager(app)


# 2.使用Command例項的@command修飾符
@manager.command
def hi():
    print("hi flask")


if __name__ == '__main__':
    # 通過管理物件來啟動flask
    manager.run()

2.3使用 Manager 例項的@option修飾符

from flask import Flask
from flask_script import Manager    # 啟動命令的管理類


app = Flask(__name__)
# 建立Manager管理類的物件
manager = Manager(app)


# 3.使用 Manager 例項的@option修飾符
@manager.option('-n', '--name', dest='name', help='Your name', default='zhangsan')
# 解釋:
#   -n:引數的簡寫
#   --name:引數全稱
#   dest="name":使用者在引數後的輸入值傳遞給函式中的name
#   help='Your name':使用--help檢視時的引數解釋
#   default='zhangsan':使用者不使用引數時的預設值
@manager.option('-a', '--age', dest='age', help='Your age', default='18')
def say(name, age):
    print(F"{name}:{age}")


if __name__ == '__main__':
    # 通過管理物件來啟動flask
    manager.run()

參考:https://blog.csdn.net/twc829/article/details/52154214