python flask扩展_flask扩展 -- flask-script

Flask-Scropt插件为在Flask里编写额外的脚本提供了支持。这包括运行一个开发服务器,一个定制的Python命令行,用于执行初始化数据库、定时任务和其他属于web应用之外的命令行任务的脚本。

1. 安装Flask-Script

(1)用命令pip和easy_install安装:

pip install Flask-Script

(2)从github下载最新版本,源码编译安装:

git clone https://github.com/smurfix/flask-script.git

cd flask-script

python setup.py develop

2. 创建并运行命令行

第一步需要创建一个可以运行你脚本命令的Python模块。你可以随意命名它。我这里就以manage.py为例。

在manage.py文件中,需要先创建一个Manager实例。Manager类会跟踪所有的命令和命令行调用的参数:

from flask_script importManager

app= Flask(__name__)#configure your app

manager=Manager(app)if __name__ == "__main__":

manager.run()

调用manager.run()方法初始化Mnager实例来接收命令行输入。

第二步是创建添加自定义命令。创建自定义命令有三种方法:

定义Command类的子类

使用@command装饰器

使用@option装饰器

(1) 定义Command类的子类

为了简单,我们就创建一个hello命令来输出“hello world”:

from flask_script importCommandclassHello(Command):"prints hello world"

defrun(self):print "hello world"

接下来我们需要把命令添加到Mannager实例:

manager.add_command('hello', Hello())

完整代码如下:

from flask_script importManager,Commandfrom flask importFlask

app= Flask(__name__)

manager=Manager(app)classhello(Command):"prints hello world"

defrun(self):print("hello world")

manager.add_command('hello', hello())if __name__ == "__main__":

manager.run()

使用:

在命令行运行如下命令:

(1)$python manage.py hellohello 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 andexit

也可以通过把包含Command实例的字典作为manager.run()的参数:

manager.run({'hello' : Hello()})

(2)使用@command装饰器

对于简单的命令,我们可以使用属于Manager实例的@command装饰器。

@manager.commanddefhello():"Just say hello"

print("hello")

其使用方法和前面一样。

(3)使用@option装饰器

如何需要通过命令行进行比较复杂的控制,可以使用Manager实例的@option装饰器。

@manager.option('-n', '--name', help='Your name')defhello(name):print("hello", name)

你可能感兴趣的:(python,flask扩展)