Flask:Flask-Script扩展与Click

Flask内置的开发服务器支持修改启动信息,但只能在代码中以参数的形式传入app.run()中进行设置,如果让应用支持命令行选项可以方便开发者进行调试。

Flask-Script扩展

Flask-Script自带了一些常用的命令行选项,如设置服务器IP和端口等,而且允许自定义命令行选项

安装

1
pip install flask-script

让应用支持通过命令行方式修改IP和端口

1
2
3
4
5
6
7
8
9
10
11
12
from flask import Flask
from flask_script import Manager

app = Flask(__name__)
manager = Manager(app)

@app.route("/")
def index():
return "Hello World"

if __name__ == "__main__":
manager.run()

启动服务

1
python main.py runserver

默认绑定IP为127.0.0.1绑定端口为5000,如果想修改可以以如下方式启动应用

1
python main.py runserver --host 127.0.0.1 --port 80

注: –host与-t作用一致,–port与-p作用一致

Flask-Script还提供了shell选项,支持在命令行中调试代码,类似Django的Shell

1
python manage.py shell

自定义命令选项

只需要在函数上加上 @manager.command 装饰器即可,函数名即为命令选项名

1
2
3
@manager.command
def initdb():
db.create_db()

这样当我们执行如下命令时会帮我们创建数据表

1
python manage.py initdb

命令还支持参数

1
2
3
4
@manager.option('-h', '--host', dest='h', help='host name', default='0.0.0.0')
@manager.option('-p', '--port', dest='p', help='port number', default='80')
def run(h, p):
app.run(host=h, port=p)

使用

1
python manage.py -h 0.0.0.0 -p 80

Click

新版本的Flask开始依赖该模块,在安装Flask的时候会被一并安装,使用它还需要配置如下环境变量

1
FLASK_APP = 你的Flask启动脚本

启动应用程序

1
flask run -h 0.0.0.0 -p 80

Click同样支持Shell

1
flask shell

Click还提供了db选项,具体请查文档

自定义命令选项

只需要在函数上加上 @app.cli.command() 装饰器即可,默认情况下函数名即为命令选项名

1
2
3
@app.cli.command()
def initdb():
db.create_db()

使用

1
flask initdb

如果想不使用函数名作为命令选项可以通过装饰器参数的形式传入,并且支持定义提示信息

1
2
3
@app.cli.command('initdb', short_help='create all table')
def xxx():
db.create_db()

命令还支持参数

1
2
3
4
5
6
7
import click

@app.cli.command("runserver", short_help="run server")
@click.option('-h', help="host")
@click.option('-p', help="port")
def run(h,p):
app.run(host=h,port=p)

使用

1
flask runserver -h 0.0.0.0 -p 80

  • 本文作者: Harmel
  • 本文链接: http://www.harmel.cn/2018/08/flask-script.html
  • 版权声明: 文章如无特别说明,则表明该文章为原创文章,如需要转载,请注明出处。
  • 本站说明: 本站使用阿里云服务器,如果您喜欢我的网站,欢迎收藏,能捐赠支持一下就再好不过了。