Flask -- (17)Flask-Script
Flask作为一个简介的Web开发框架,有很多优点。开发者可以*选择适合于自己项目的扩展,而不必受制于框架。
但是在开发的时候,难免使用一些别人造好的*,来提高开发效率。
Flask的扩展都暴露在flask.ext命名空间下,可以在环境中通过pip安装好相应额扩展,然后在程序中导入相应的包即可使用扩展。
Flask-Script是一个让你的命令行支持自定义命令的工具,它为Flask程序添加一个命令行解释器。可以让我们的程序从命令行直接执行相应的程序。
通过使用Flask-Script扩展,我们可以在Flask服务器启动的时候,通过命令行的方式传入参数。而不仅仅通过app.run()方法中传参,比如我们可以通过python hello.py runserver –host ip地址,告诉服务器在哪个网络接口监听来自客户端的连接。默认情况下,服务器只监听来自服务器所在计算机发起的连接,即localhost连接。
我们可以通过python hello.py runserver --help
来查看参数。
Flask-Script插件为在Flask里编写额外的脚本提供了支持。包括了一个开发服务器,一个定制的Python命令行,用于执行初始化数据库、定时任务和其他属于web应用之外的命令行任务的脚本。
创建和运行命令行
在文件manage.py
中,创建一个Manager实例,Manager类会跟踪所有的命令和命令行调用的参数。
# coding:utf-8
from flask import Flask
from flask_script import Manager
app = Flask(__name__)
manager = Manager(app)
# configure your app
@app.route("/")
def index():
return "hello world"
if __name__ == '__main__':
manager.run()
调用manager.run()的方法来初始化Manager实例来接收命令行输入。
然后是创建添加自定义命令。创建自定义命令有三种方法:
- 定义Command类的子类
- 使用@command装饰器
- 使用@option装饰器
(1)定义Command类的子类
首先我们需要把命令添加到Manager实例,然后把命令添加到Manager实例。完整代码如下:
# coding:utf-8
from flask import Flask
from flask_script import Manager,Command
app = Flask(__name__)
manager = Manager(app)
@app.route("/")
def index():
return "hello world"
# 首先创建一个hello命令来输出“Hello World”
class Hello(Command):
"""prints hello world"""
def run(self):
print("Hello World")
# 接下来需要把命令添加到Manager实例
manager.add_command('hello',Hello())
if __name__ == '__main__':
manager.run()
# 也可以把包含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)
使用方法:
上一篇: 38-Count And Say
下一篇: 263. 丑数
推荐阅读
-
bricscad v17怎么破解?BricsCAD V17.2.08安装激活及运行图文详细教程
-
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
-
jQuery实现Ajax功能分析【与Flask后台交互】
-
用ReactJS和Python的Flask框架编写留言板的代码示例
-
17种正则表达式
-
python flask框架实现传数据到js的方法分析
-
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
-
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
-
23种设计模式(17)java命令模式
-
Python Flask框架模板操作实例分析