flask扩展 flask-script
flask_script的作用是可以通过命令行的形式来操作flask例如通过一个命令跑一个开发版本的服务器,设置数据库,定时任务等。
# 文档
https://flask-script.readthedocs.io/en/latest/
# 安装
pip install flask-script
使用 runserver
# run_flak.py
from flask_script import Manager
# 新版本的规范都是 flask_xxxx
# 老版本的规范是 flask.ext.xxxx
# 所以看到其他老一些的教程材料,随机应变
app = create_app() # create_app 自己定义的函数,创建app并返回,可以换成Flask(_name__)
manager = Manager(app) # 理解成包装以下
if __name__ == "__main__":
manager.run() # 代替app.run()
# 比如我们启动的文件叫 run_flak.py
# 终端使用 python run_flask.py runserver 就启动了,使用的是默认参数
使用shell
# manager还为我们提供了一个shell的交互模式
# python run_flask.py shell
# 但是默认的shell很多模型类没有导入,比如我们的用户model,这样调试不方便
# 重写这个shell
from flask_script import Shell
def make_shell_context():
from api.core import db
from api.models import User
return dict(app=app, db=db, User=User)
# 注册
manager.add_command("shell", Shell(make_context=make_shell_context))
# Ps.
# manager.add_command("shell", Shell(make_context=make_shell_context))
# @app.shell_context_processor
# 效果一样
定义自己的命令
# 运行这个,python run_flask.py dev
# dev 是函数名
@manager.command
def dev():
ip = "0.0.0.0"
port = 9001
try:
app.run(host=ip,port=port,threaded=True)
finally:
cleanup_app()
# 还可以给一些参数
# 使用方式 python run_flask.py cmd 0.0.0.0 9999
# manager.command可以换成manager.add_command("runserver", Server())
@manager.command
@manager.option('-h', '--host', dest='host')
@manager.option('-p', '--ip', dest='ip')
def cmd(host, ip):
"""
自定义命令
"""
print(host, ip)
补充
安装flask的时候, 默认安装了click , manager有一些功能和他类似
https://www.cnblogs.com/alexkn/p/6980400.html
@click.command()
@click.option('--count', default=1, help='number of greetings')
@click.argument('name')
def hello(count, name):
for x in range(count):
click.echo('Hello %s!' % name)
本文详细介绍了如何使用Flask-Script扩展为Flask应用增加命令行功能,包括启动开发服务器、自定义命令及参数,以及如何通过shell命令进行调试。
1081

被折叠的 条评论
为什么被折叠?



