Flask-Script 从字面意思上来看就是 Flask 的脚本
是的,熟悉Django的同学是否还记得Django的启动命令呢? python manager.py runserver 大概是这样对吧
其实Flask也可以做到,基于 Flask-Script 就可以了
1.安装 Flask-Script
pip install Flask-Script
2.将 Flask-Script 加入到 Flask 项目中

1 import MyApp 2 # 导入 Flask-Script 中的 Manager 3 from flask_script import Manager 4 5 app = MyApp.create_app() 6 # 让app支持 Manager 7 manager = Manager(app) 8 9 if __name__ == '__main__': 10 #app.run() 11 # 替换原有的app.run(),然后大功告成了 12 manager.run()
3.使用命令启动 Flask 项目
python manager.py runserver
4.启动项目并更改配置参数(监听IP地址,监听端口)
python manager.py runserver -h 0.0.0.0 -p 9527
5.高级操作 - 自定制脚本命令
5.1.方式一 : @manager.command

1 import MyApp 2 # 导入 Flask-Script 中的 Manager 3 from flask_script import Manager 4 5 app = MyApp.create_app() 6 # 让app支持 Manager 7 manager = Manager(app) # type:Manager 8 9 @manager.command 10 def DragonFire(arg): 11 print(arg) 12 13 if __name__ == '__main__': 14 #app.run() 15 # 替换原有的app.run(),然后大功告成了 16 manager.run()
python manager.py DragonFire 666
5.2.方式二 : @manager.opation("-短指令","--长指令",dest="变量名")

1 import MyApp 2 # 导入 Flask-Script 中的 Manager 3 from flask_script import Manager 4 5 app = MyApp.create_app() 6 # 让app支持 Manager 7 manager = Manager(app) # type:Manager 8 9 @manager.command 10 def DragonFire(arg): 11 print(arg) 12 13 @manager.option("-n","--name",dest="name") 14 @manager.option("-s","--say",dest="say") 15 def talk(name,say): 16 print(f"{name}你可真{say}") 17 18 if __name__ == '__main__': 19 #app.run() 20 # 替换原有的app.run(),然后大功告成了 21 manager.run()
python manager.py talk -n 赵丽颖 -s 漂亮 python manager.py talk --name DragonFire --say NB-Class
Flask-Migrate
1.安装 Flask-Migrate
pip install Flask-Migrate
2.将 Flask-Migrate 加入到 Flask 项目中 - PS: 注意了 Flask-Migrate 是要依赖 Flask-Script 组件的

复制代码 1 import MyApp 2 # 导入 Flask-Script 中的 Manager 3 from flask_script import Manager 4 5 # 导入 Flask-Migrate 中的 Migrate 和 MigrateCommand 6 # 这两个东西说白了就是想在 Flask-Script 中添加几个命令和指令而已 7 from flask_migrate import Migrate,MigrateCommand 8 9 app = MyApp.create_app() 10 # 让app支持 Manager 11 manager = Manager(app) # type:Manager 12 13 # Migrate 既然是数据库迁移,那么就得告诉他数据库在哪里 14 # 并且告诉他要支持那个app 15 Migrate(app,MyApp.db) 16 # 现在就要告诉manager 有新的指令了,这个新指令在MigrateCommand 中存着呢 17 manager.add_command("db",MigrateCommand) # 当你的命令中出现 db 指令,则去MigrateCommand中寻找对应关系 18 """ 19 数据库迁移指令: 20 python manager.py db init 21 python manager.py db migrate # Django中的 makemigration 22 python manager.py db upgrade # Django中的 migrate 23 """ 24 25 26 @manager.command 27 def DragonFire(arg): 28 print(arg) 29 30 @manager.option("-n","--name",dest="name") 31 @manager.option("-s","--say",dest="say") 32 def talk(name,say): 33 print(f"{name}你可真{say}") 34 35 if __name__ == '__main__': 36 #app.run() 37 # 替换原有的app.run(),然后大功告成了 38 manager.run()
3.执行数据库初始化指令
python manager.py db init
此时你会发现你的项目目录中出现了一个好玩儿的东西