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

Flask_Flask-Script脚本扩展的使用(八)的更多相关文章

  1. 玩程序 之 一 . 字符串处理工具(可通过C#脚本扩展)

    平常喜欢写点小东西玩玩,既可以娱乐自己满足自己的虚荣心,又可以方便工作和学习,今天且拿出一个来,与大家一起分享!  1. 软件介绍 言归正传,先看看需求,有这样一串字符串 abc,def,ghi,jk ...

  2. 适用于 Windows 的自定义脚本扩展

    自定义脚本扩展在 Azure 虚拟机上下载并执行脚本. 此扩展适用于部署后配置.软件安装或其他任何配置/管理任务. 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 A ...

  3. 015-elasticsearch5.4.3【五】-搜索API【四】Joining 多文档查询、GEO查询、moreLikeThisQuery、script脚本查询、span跨度查询

    一.Joining 多文档查询 joining query 像Elasticsearch这样的分布式系统中执行完整的SQL样式连接非常昂贵.相反,Elasticsearch提供两种形式的连接,旨在水平 ...

  4. 在html中添加script脚本的方法和注意事项

    在html中添加script脚本有两种方法,直接将javascript代码添加到html中与添加外部js文件,这两种方法都比较常用,大家可以根据自己需要自由选择 在html中添加<script& ...

  5. 使用自定义脚本扩展程序自动执行 VM 自定义任务

     在 Build 开发者大会上推出VM 扩展程序的其中一个称为"自定义脚本扩展程序",它支持 PowerShell.如果这是您第一次访问这些博客,可能需要查看以前的博客,请单击 ...

  6. C#用正则表达式去掉Html中的script脚本和html标签

    原文 C#用正则表达式去掉Html中的script脚本和html标签 /// <summary>         /// 用正则表达式去掉Html中的script脚本和html标签     ...

  7. 使用PrintWriter out=response.getWriter();输出script脚本时乱码解决

    使用PrintWriter out=response.getWriter();输出script脚本时乱码解决 最近遇到了一个奇怪的事情,仅仅用out.print("<script ty ...

  8. 使用lucene query的CharFilter 去掉字符中的script脚本和html标签

    1.准备数据,这里我从数据库读取一个带有html标签和script脚本的数据

  9. node Cheerio 获取script脚本里的数据

    const cheerio = require('cheerio'); const $ = cheerio.load(html); // your html//如果有多少script脚本标签使用循环来 ...

随机推荐

  1. SpringColud微服务-微服务概述

    一.什么是微服务架构 微服务架构是一种架构模式,它提倡讲单一应用程序划分为一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在单独的进程当中,服务与服务之间采用轻量级的通信机制 ...

  2. 【力扣】922. 按奇偶排序数组 II

    给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数. 对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数:当 A[i] 为偶数时, i 也是偶数. 你可以返回任何满足上述条件的数组 ...

  3. [笔记] Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting

    原文地址:https://arxiv.org/abs/2012.07436 源码地址:https://github.com/zhouhaoyi/Informer2020

  4. windows下安装linux虚拟机(wsl2),并安装docker。

    一.windows terminal(重要工具,但也可以不装) 这是微软官方推荐的终端工具,类似mac的iterm2,可同时开启多个终端,最开始默认有power shall,cmd,可下载gsudo集 ...

  5. inode节点

    目录 一.简介 二.信息 inode的内容 inode的大小 3.inode号码 三.目录文件 四.硬连接 五.软链接 六.inode的特殊作用 一.简介 理解inode,要从文件储存说起. 文件储存 ...

  6. 测试工具_http_load

    目录 一.简介 二.例子 三.参数 一.简介 http_load以并行复用的方式运行,用以测试Web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,其可以以一个单一的进程运行,这样就不会把客户机 ...

  7. Python openpyxl的使用

    import openpyxl from openpyxl.styles import Font, colors, Alignment wb = openpyxl.load_workbook('C:\ ...

  8. iOS 实现简单的界面切换

    以下是在iOS中最简单的界面切换示例.使用了多个Controller,并演示Controller之间在切换界面时的代码处理. 实现的应用界面: 首先,创建一个window-based applicat ...

  9. [BUUCTF]REVERSE——Java逆向解密

    Java逆向解密 附件 步骤: 根据题目提示是java语言编写的程序,用jd-gui反编译一下 百度了一些java里的函数后读懂了这段程序的意思,将我们输入的字符串依次+'@',然后跟32异或,得到K ...

  10. 日历优先级(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 好了,这下我们一共有三个日历了:"项目日历"(默认的日历)."任务日历"(与任务关 ...