Flask系列教程(26)——Flask-Script

weixin_34116110發表於2018-06-05

Flask-Script:

如果想深入學習Flask,可以觀看這套免費Flask教學視訊:零基礎:Flask入門到專案實戰

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. 使用@command裝飾器:這種方法之前已經介紹過。就不過多講解了。

  2. 使用類繼承自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`方法新增命令。
    
    
  3. 使用option裝飾器:如果想要在使用命令的時候還傳遞引數進去,那麼使用@option裝飾器更加的方便:

    @manager.option('-n','--name',dest='name')
    def hello(name):
        print 'hello ',name
    

    這樣,呼叫hello命令:

    python manage.py -n xt
    

    或者

    python manage.py --name xt
    

    就可以輸出:

    hello xt
    

新增引數到命令中:

  • 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_name),
    ]

    def run(self,name):
        print 'hello',name

如果想深入學習Flask,可以觀看這套免費Flask教學視訊:零基礎:Flask入門到專案實戰

</article>

版權宣告: https://blog.csdn.net/huangyong1314/article/details/80555176

相關文章