• Flask_Flask-Script脚本扩展的使用(八)


    Flask-Script扩展包提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任务;使得脚本和系统分开;

    使用Flask-Script扩展包前,需要使用下面命令进行安装

    pip install Flask-Script

    Flask-Script工作方式和Flask本身类似,只需定义和添加从命令行中被Manager实例调用的命令;

    官方文档:http://flask-script.readthedocs.io/en/latest/

    一、基本运用

    首先,创建一个Python模板运行命令脚本,可起名为manager.py;

    在该文件中,必须有一个Manager实例,Manager类追踪所有在命令行中调用的命令和处理过程的调用运行情况;

    Manager只有一个参数——Flask实例,也可以是一个函数或其他的返回Flask实例;

    调用manager.run()启动Manager实例接收命令行中的命令;

    from flask import Flask
    from flask_script import Manager    # 启动命令的管理类
    
    
    app = Flask(__name__)
    # 创建Manager管理类的对象
    manager = Manager(app)
    
    
    @app.route("/index/")
    def index():
        return "hello flask"
    
    
    if __name__ == '__main__':
        # 通过管理对象来启动flask
        manager.run()

    创建好manager.py文件后,不能直接通过启动文件来运行,需要在系统的命令行中通过命令启动。

    上图中通过 runserver 命令启动了服务

    上图中通过shell命令,进入了flask的交互模式。

    我们可以通过 --help查看其它可用命令

     

     并且可以通过 命令+ --help查看每个命令的可用参数

    二、自定义命令

    除了 runserver和shell命令,我们还可以创建自定义命令,有三种创建命令的方法:

    1. 创建Command子类
    2. 使用 Manager 实例的@command修饰符
    3. 使用 Manager 实例的@option修饰符

    2.1 创建Command子类

    Command子类必须定义一个run方法

    举例:创建Hello命令,并将Hello命令加入Manager实例;

    from flask import Flask
    from flask_script import Manager    # 启动命令的管理类
    from flask_script import Command
    
    app = Flask(__name__)
    # 创建Manager管理类的对象
    manager = Manager(app)
    
    # 1.创建Command子类,并且必须定义一个run方法
    class Hello(Command):
        def run(self):
            print("hello flask")
    
    # 自定义命令
    manager.add_command("hello", Hello())   # hello为命令行的启动命令,Hello()为命令调用的类
    
    
    
    if __name__ == '__main__':
        # 通过管理对象来启动flask
        manager.run()

    运行自定义命令

    自定义命令也可以通过 --help查看

    2.2 使用 Manager 实例的@command修饰符

    from flask import Flask
    from flask_script import Manager    # 启动命令的管理类
    
    
    app = Flask(__name__)
    # 创建Manager管理类的对象
    manager = Manager(app)
    
    
    # 2.使用Command实例的@command修饰符
    @manager.command
    def hi():
        print("hi flask")
    
    
    if __name__ == '__main__':
        # 通过管理对象来启动flask
        manager.run()

    2.3 使用 Manager 实例的@option修饰符

    from flask import Flask
    from flask_script import Manager    # 启动命令的管理类
    
    
    app = Flask(__name__)
    # 创建Manager管理类的对象
    manager = Manager(app)
    
    
    # 3.使用 Manager 实例的@option修饰符
    @manager.option('-n', '--name', dest='name', help='Your name', default='zhangsan')
    # 解释:
    #   -n:参数的简写
    #   --name:参数全称
    #   dest="name":用户在参数后的输入值传递给函数中的name
    #   help='Your name':使用--help查看时的参数解释
    #   default='zhangsan':用户不使用参数时的默认值
    @manager.option('-a', '--age', dest='age', help='Your age', default='18')
    def say(name, age):
        print(F"{name}:{age}")
    
    
    if __name__ == '__main__':
        # 通过管理对象来启动flask
        manager.run()

     附码:

    from flask import Flask
    from flask_script import Manager    # 启动命令的管理类
    from flask_script import Command
    
    app = Flask(__name__)
    # 创建Manager管理类的对象
    manager = Manager(app)
    
    
    # 自定义命令一共3中方法
    # 1.创建Command子类,并且必须定义一个run方法
    class Hello(Command):
        def run(self):
            print("hello flask")
    
    
    # 自定义命令
    manager.add_command("hello", Hello())   # hello为命令行的启动命令,Hello()为命令调用的类
    
    
    # 2.使用 Manager 实例的@command修饰符
    @manager.command
    def hi():
        print("hi flask")
    
    
    # 3.使用 Manager 实例的@option修饰符
    @manager.option('-n', '--name', dest='name', help='Your name', default='zhangsan')
    # 解释:
    #   -n:参数的简写
    #   --name:参数全称
    #   dest="name":用户在参数后的输入值传递给函数中的name
    #   help='Your name':使用--help查看时的参数解释
    #   default='zhangsan':用户不使用参数时的默认值
    @manager.option('-a', '--age', dest='age', help='Your age', default='18')
    def say(name, age):
        print(F"{name}:{age}")
    
    
    if __name__ == '__main__':
        # 通过管理对象来启动flask
        manager.run()

    参考:https://blog.csdn.net/twc829/article/details/52154214

  • 相关阅读:
    细说 webpack 之流程篇
    git 撤销commit
    Git远程操作详解
    git Could not read from remote repository 解决
    Mysql 关键字及保留字
    使用 Intellij Idea 导出JavaDoc
    【树莓派】盒子常见问题处理基础帮助
    【树莓派】crontab设置Linux设备定时重启
    【医疗行业】关于dcm4che DICOM Toolkit:C-Move与C-Get
    关于操作系统:eos、deepin
  • 原文地址:https://www.cnblogs.com/testlearn/p/14108149.html
Copyright © 2020-2023  润新知