flask-script模块的具体使用

 更新时间:2021年11月03日 11:10:36   作者:trnx  
本文主要介绍了flask-script模块的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

1 作用

通过 flask-script 可以以命令的形式,执行 flask 语句。

提供向 Flask 插入外部脚本的功能,如 运行一个开发服务器、运行 shell、执行数据库脚本。

2 安装

pip install flask-script

3 所有要运行的命令都放在 manager.py 中

from flask import Flask
from flask_script import Manager, Command
from loguru import logger
 
# [ 生成一个 Flask 实例 ]
app = Flask(__name__)  
 
# [ Manager 构造方法,只接受一个参数,
# 就是 Flask 实例,Manager 负责追踪整个 命令 的处理过程 ]
manager = Manager(app)  

4 三种方式 创建命令

4.1 方式一 创建 Command子类

# 定义要执行的命令类型 Hello 继承 Command
class Hello(Command):
    # 重写 Command 类的 run() 方法
    def run(self):  
        ''' 要执行的命令 '''
        logger.info('sub class of Command')  
 
if __name__ == '__main__':
    '''
    将 hello 命令加入到 manager ,
    第一个参数为自己起的的命令简称,
    第二个参数为 Command 子类 Hello 的实例
    '''
    manager.add_command('hello', Hello())  
    manager.run()

在 cmd 执行 python manager.py hello [ hello 就是自己的 命令的简称 ]

这样就会打印出 sub class of Command

4.2 方式二 使用装饰器 @manager.command

'''
@manager.command 其实 manager 就是上面初始化出来的 Manager 类的实例,
如果 Manager 类的实例名称为 manager_1 ,则装饰器也要改成 @manager_1.command
'''
 
 
'''
使用 装饰器 @manager.command 后,命令的简称就是 函数的名字 hello_command,
在 __main__ 中 就不需要 在 通过 manager.add_command() 将 命令简称加入到 command 实例中了
'''
@manager.command
def hello_command(): 
    logger.info('@manager.command')
 
if __name__ == '__main__':
    '''
    在 __main__ 中 就不需要 在 通过 manager.add_command() 将 命令简称加入到 command 实例中了
    '''
    manager.run()  

在 cmd 执行 python manager.py hello_command [ hello_command 就是自己的 命令的简称 ]

这样就会打印出 @manager.command

4.3 方式三 使用装饰器 @manager.option

'''
-u 为命令参数的 简写,--username 为命令参数的 全称
(类似于 Linux 命令的参数,参数简写 为一个 -,参数全称为 -- ),
无论是参数的 简写、还是 全称 都必须以 - 开头,但是 全称也可以只以 一个 - 开头,
但建议以 两个 - 开头,因为更符合编码规范,dest 的值必须与 hello_option 函数(也就是命令)的 入参名
称 完全相同,因为 dest 就是表示这个参数值,传递给 hello_option 命令函数的那个入参的;default 表示
参数的默认值,也就是如果执行 python manager.py hello_option 执行命令时,不带参数,就用参数的默认
值
'''
@manager.option('-u', '--username', dest='username', default='zhangsan')  
@manager.option('-p', '--password', dest='password', default='123456')
def hello_option(username, password):
    logger.info('@manage.option')
    logger.info(f'username = {username}, password = {password}')
 
if __name__ == '__main__':
    '''
    在 __main__ 中 就不需要 在 通过 manager.add_command() 将 命令简称加入到 command 实例中了
    '''

到此这篇关于flask-script模块的具体使用的文章就介绍到这了,更多相关flask-script模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django+Ajax异步刷新/定时自动刷新实例详解

    Django+Ajax异步刷新/定时自动刷新实例详解

    AJAX是前端技术的集合,包括JavaScript、XML、HTML、CSS等,下面这篇文章主要给大家介绍了关于Django+Ajax异步刷新/定时自动刷新的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • Python 实现取多维数组第n维的前几位

    Python 实现取多维数组第n维的前几位

    今天小编就为大家分享一篇Python 实现取多维数组第n维的前几位,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python socket编程实例详解

    Python socket编程实例详解

    这篇文章主要介绍了Python socket编程,以实例形式较为详细的分析了Python中socket模块的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • 使用Python的web.py框架实现类似Django的ORM查询的教程

    使用Python的web.py框架实现类似Django的ORM查询的教程

    这篇文章主要介绍了使用Python的web.py框架实现类似Django的ORM查询的教程,集成的ORM操作数据库向来是Python最强大的功能之一,本文则探讨如何在web.py框架上实现,需要的朋友可以参考下
    2015-05-05
  • Python检测PE所启用保护方式详解

    Python检测PE所启用保护方式详解

    Python通过pywin32模块调用WindowsAPI接口,可以实现对特定进程加载模块的枚举输出并检测该PE程序模块所启用的保护方式,感兴趣的可以了解一下
    2022-10-10
  • python3连接MySQL数据库实例详解

    python3连接MySQL数据库实例详解

    这篇文章主要为大家详细介绍了python3连接MySQL数据库实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Python时间获取及转换知识汇总

    Python时间获取及转换知识汇总

    这篇文章主要介绍了Python时间获取及转换知识汇总的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • 人工智能学习Pytorch数据集分割及动量示例详解

    人工智能学习Pytorch数据集分割及动量示例详解

    这篇文章主要为大家介绍了人工智能学习Pytorch数据集分割及动量示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • python imutils包基本概念及使用

    python imutils包基本概念及使用

    python imutils包可以很简洁的调用opencv接口,轻松实现图像的平移,旋转,缩放,骨架化等操作,对python imutils包基本概念及使用方法感兴趣的朋友一起看看吧
    2021-07-07
  • 详解python之协程gevent模块

    详解python之协程gevent模块

    这篇文章主要介绍了详解python之协程gevent模块,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06

最新评论