python(flask-script)

编程入门 行业动态 更新时间:2024-10-25 08:17:03

<a href=https://www.elefans.com/category/jswz/34/1770869.html style=python(flask-script)"/>

python(flask-script)

flask-script简介

1.什么是Flask-Script?

Flask-Script用来生成shell命令;为在Flask里编写额外的脚本提供了支持。

  • 这包括运行一个开发服务器,一个定制的Python命令行,用于执行
    初始化数据库、定时任务和其他属于web应用之外的命令行任务的脚本。
  • Flask-Script和Flask本身的工作方式类似。只需要定义和添加能从命令行中被Manager实例调用的命令即可。

2. 为什么使用Flask-Script?

Flask的开发Web服务器支持很多启动设置选项,但只能在脚本中作为参数传给app.run()函数。这种方式很不方便,传递设置选项的理想方式是使用命令行参数。Flask-Scrip就是这么一个Flask扩展,为Flask程序添加一个命令行解析器。Flask-Script自带了一组常用选项,而且还支持自定义命令。

3. 如何安装Flask-Script?

在当前虚拟环境中安装:

pip install flask_script

4. 如何配置Flask-Script?

创建一个Python模块运行你的命令脚本。可以任意起名,例如manage.py。无需把所有的命令都放在同一个文件里,例如,在一个大型项目中,可以把相关联的命令放在不同的文件里。

from flask_script import Managerapp = Flask(__name__)
# Manager类将追踪所有的在命令行中调用的命令和处理过程的调用运行情况;
# configure your app
manager = Manager(app)if __name__ == "__main__":# 将启动Manger实例接收命令行中的命令。manager.run()
实现功能:

5. 添加自定义命令的3中方式:

网站参考: /

  • 定义Command的子类;
from flask_script import Manager,Command
from app import db
database_manager  = Manager(usage="数据库的操作详情")# 1. 方法一: 类的继承
class AddUser(Command):# 添加注释,标明使用功能"""添加用户"""def run(self):u = User(username="fentiao90009", password="fentiao", email="fentiao@qq.com")db.session.add(u)db.session.commit()return "正在添加用户%s........" % (u.username)
# 添加类到命令中, 让manger进行管理
database_manager.add_command('adduser', AddUser)
  • 使用command装饰器
# 2. 通过装饰器@database_manager.command
@database_manager.command
def deleteUser():"""删除用户"""u = User.query.filter_by(username='fentiao90009').first()if u:db.session.delete(u)db.session.commit()return "删除用户%s成功....." % (u.username)else:return "删除用户失败:"
  • 使用option装饰器
# 3). option装饰器, 可以指定参数
#  -表示简称,--表示全称,help表示标注的帮助手册
@database_manager.option('-u', '--username', help="指定用户名")
@database_manager.option('-p', '--password', help="指定密码")
def add_user(username, password):"""添加用户, 指定用户名和密码"""if username and password:u = User(username=username, password=password)db.session.add(u)db.session.commit()return  "添加用户%s成功" %(u.username)else:return  "请指定用户名和密码"

6. 命令行拓展开发

#  prompt_bool:在命令行给出提示信息,并获取用户的操作(yes or no)
from flask_script import Manager, prompt_bool, Commandfrom app import db
from app.models import User, Roledatabase_manager  = Manager(usage="数据库的操作详情")@database_manager.command
def dropdb():"""删除数据库"""if prompt_bool("是否删除数据库"):db.drop_all()@database_manager.command
def createdb():"""删除数据库"""if prompt_bool("是否创建数据库"):db.create_all()@database_manager.command
def recreate():"""重建数据库"""if prompt_bool("是否重建数据库"):dropdb()createdb()@database_manager.command
def init_data():role = Role(name="管理员")db.session.add(role)for user in range(100):u = User(username="westos%s" %(user), password="hello", email="westos%s@qq.com" %(user))db.session.add(u)db.session.commit()print("初始化完成")

更多推荐

python(flask-script)

本文发布于:2023-07-28 17:39:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1265168.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:python   flask   script

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!