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. 【Linux】【Services】【Disks】zfs

    1. 简介: 据说zfs有去除重复数据的功能,无良人士继续要求吧samba共享盘使用的centos7上自带的xfs改成zfs,并且开启去重功能.samba配置见 http://www.cnblogs. ...

  2. BS版本的TCP程序

    // 使用Socket对象中的方法getInputStream,获取到网络字节输入流InputStream对象 InputStream is = socket.getInputStream();// ...

  3. Mybatis-Plus默认主键策略导致自动生成19位长度主键id的坑

    原创/朱季谦 某天检查一位离职同事写的代码,发现其对应表虽然设置了AUTO_INCREMENT自增,但页面新增功能生成的数据主键id很诡异,长度达到了19位,且不是从1开始递增的-- 我检查了一下,发 ...

  4. JavaScript中的NaN

    论装逼我只服NaN 首先这逼自己都不愿意等于自己 console.log(NaN == NaN); // false 这逼够嫌弃自己的 其次这逼本身的意思是非数字就是NaN 然鹅typeof NaN结 ...

  5. LuoguP7080 [NWRRC2013]Ballot Analyzing Device 题解

    Content 有 \(n\) 名选手参加一个比赛,有 \(m\) 个人为他们投票.第 \(i\) 个人的投票情况用一个长度为 \(n\),并且仅包含 . 和 X 两个字符的字符串,其中,如果第 \( ...

  6. SQL Server中的函数

    字符串函数 日期函数 数学函数 系统函数

  7. 【C语言】Socket发送HTTP-TCP请求,数据有字符串插入

    问题描述: 场景:编写Socket接口,向LOKI发送POST请求查询数据 BUG发现位置:通过cJSON读取时间戳,发现被截断. 现象:通过read()去读取返回的数据,数据行中被插入字符:如下 c ...

  8. 【LeetCode】NO.376 摆动序列 (Python) [贪心算法]

    376. 摆动序列 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 .第一个差(如果存在的话)可能是正数或负数.仅有一个元素或者含两个不等元素的序列也视作摆动序列. 例 ...

  9. Python处理utf-8 添加和删除BOM头

    以下代码只处理了assic和utf8文件.其它文件编码为保险起见并未加入支持. 参数 exts 需要处理文件的扩展名 folders 需要处理的文件夹及子目录 处理目录为当前目录运行:添加bom头 p ...

  10. c++之面试题(2)实现字符串的分割函数SplitStr

    题目描述 3.实现一个将字符串按指定字符分隔的函数,形式已经确定如下,请完成标有"//请补充"的内容. 说明:返回值为是否找到分割符(true找到,false未找到),当未找到分割 ...