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 Manager

app = Flask(__name__)
# Manager类将追踪所有的在命令行中调用的命令和处理过程的调用运行情况
manager = Manager(app)

if __name__ == "__main__":
    # 将启动Manger实例接收命令行中的命令。
    manager.run()
  • 实现功能

(2048) [root@foundation0 day36]# python manage.py 
usage: manage.py [-?] {shell,runserver} ...

positional arguments:
  {shell,runserver}
    shell            Runs a Python shell inside Flask application context.
    runserver        Runs the Flask development server i.e. app.run()  # 运行服务器, 可以指定host和端口
 1010  python manage.py  runserver 
 1011  python manage.py  runserver  -h
 1012  python manage.py  runserver  -h '0.0.0.0' -p 8089

optional arguments:
  -?, --help         show this help message and exit

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

# 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)


# 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 "删除用户失败:"


# 3). option装饰器, 可以指定参数
@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. 命令行拓展开发

Extension developers can easily create convenient sub-manager instance within their extensions to make it easy for a user to consume all the available commands of an extension.
Here is an example how a database extension could provide (ex. database.py):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值