• flask-script


    Flask-Script

    • flask-script的作用是可以通过命令行的形式来操作Flask.例如通过命令跑一个开发的服务器、设置数据库等。

    命令的添加方式

    1 .使用manage.command: 这个方法是用来添加那些不需要传递参数的命令的。
    2 .使用manage.option: 这个方法是用来添加那些需要传递参数的命令的。有几个参数就需要些使用几个参数器。
    3 .如果有一些命令是针对某一功能的,可以加这些命令放在同一个模块里

    安装Flask-Script并初始化

    用pip可以实现安装:

    pip install flask-script

    安装完成后,新建manager.py文件并输入下列代码初始化:

    
    
    from flask import Flask
    
    app = Flask(__name__)
    
    """使用flask-script启动项目"""
    from flask_script import Manager
    manager = Manager(app)
    
    @app.route('/')
    def index():
        return 'hello world'
    
    if  __name__ == "__main__"
        manager.run()

    可以看出,代码中包含一个Manager实例,是执行代码的必须项,其作用是追踪所有在命令行中调用的命令和处理过程的调用和运行情况。

    Manager实例化只有一个参数——Flask实例,无论是导入还是生成,创建Manager实例时都需要用到Flask对象。

    当调用manager.run()时,就启动了Manager实例接收命令行中的命令。

    Command子类创建命令

    要想让Manager知道哪些方法归它管,需要用特定的方法判定归属。

    定义一个子类继承自Command类,然后在manager.add_command()方法中可以将这个类定义成一些命令。修改manager.py代码:

    """自定义flask_script终端命令"""
    from flask_script import Command
    class HelloCommand(Command):
        """命令的相关描述"""
        def run(self):
            with open("text.txt", "w") as f:
                f.write("hello
    hello")
                pass
            print("这是执行了hello命令")
    
    manage.add_command('hello', HelloCommand())

    上面的代码中定义了一个子类HelloCommand(),HelloCommand()类继承了Command父类,因此可以用manager.add_command()方法将HelloCommand()类定义成命令“hello”

    使用Command实例的@command修饰符

    href="mailto:%E4%BD%BF%E7%94%A8@manager.command">使用@manager.command修饰一个定义好的函数,就相当于给此函数添加了一个命令,此命令的名称就是函数的名称。修改manager.py代码如下:

    from flask_script import Manager,Server,Command
    from flask import Flask
     
    app = Flask(__name__)
    manager = Manager(app)
     
    @manager.command
    def hello():
     print("Hello world!")
     
    if __name__ == "__main__":
     manager.run()

    使用Command实例的@option修饰符创建命令

    前面的例子中,函数都没有设置参数,那如果要传入参数怎么办呢?

    @option修饰符就能实现多个参数项传入,继续修改manager.py代码:

    from flask_script import Manager
    from flask import Flask
     
    app = Flask(__name__)
    manager = Manager(app)
     
    @manager.option('-n','--name',dest='name',help='Your name',default='world')
    @manager.option('-u','--url',dest='url',default='www.csdn.com')
    def hello(name, url):
     print("Hello",name)
     print(url)
     
    if __name__ == "__main__":
     manager.run()

    参考:https://zhuanlan.zhihu.com/p/269820011

  • 相关阅读:
    python获取指定日期和转换的整理
    调用baidu地图API,实现语音导航播报
    Quartus 调试笔记
    mybatis-plus学习遇到的坑
    X509Certificate
    Hyperledger Fabric学习笔记——Wallet
    [WCF权限控制]从两个重要的概念谈起:Identity与Principal
    9-HyperLedger-Fabric原理-MSP详解(一)-MSP基础
    区块链中的“双花”问题
    区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述
  • 原文地址:https://www.cnblogs.com/fat-girl-spring/p/15338215.html
Copyright © 2020-2023  润新知