@manager.option的使用
命令介绍
- 在python中使用Flask框架开发项目时,会用到Flask_script扩展包来管理程序,可以使其在终端中使用指令操作程序。
- manager的作用:在终端可以使用指令来操作程序
- option装饰后的作用:可以传递参数
- 使用场景:创建一些敏感数据(如后台管理员),批量添加测试数据等等…
- 终端中操作指令 : python 文件名 方法名 -option xxx -option xxxxx
简单案例
- 在终端添加用户
python manage.py create_cms_user -u xxx --p xxx -e xxx@qq.com
- manage.py
from flask_script import Manager from flask_migrate import MigrateCommand, Migrate from zlbbs import create_app from exts import db # 导入以后他会把这个models所有的表都会印刷到数据库当中 from apps.cms import models as cms_models # 把cms_models下的CMSUser这个表类, 赋值给CMSUser CMSUser = cms_models.CMSUser # 创建flask里app app = create_app() # 创建数据库迁移工具对象的步足有3步 # 1. 创建flask脚本管理工具对象 manager = Manager(app) # 2. 创建数据库迁移工具对象 Migrate(app, db) # 3. 向manager对象中添加数据库的操作命令 # 第一个参数是给这条命令取的名字叫什么,关于数据库的我们通常叫db # 第二个参数就是具体的命令 manager.add_command("db", MigrateCommand) # 创建管理员 --manager的作用: 是在终端使用命令, option的作用:装饰的之后,可以传递参数 @manager.option("-u", "--username", dest="username") @manager.option("-p", "--password", dest="password") @manager.option("-e", "--email", dest="email") def create_cms_user(username, password, email): """创建管理员用户""" user = CMSUser(username=username, password=password, email=email) # 添加 db.session.add(user) try: # 提交到数据库 db.session.commit() print("cms 用户添加成功") except Exception as e: print(e) db.session.rollback() print("cms 用户添加失败") if __name__ == "__main__": manager.run()