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命令,我们还可以创建自定义命令,有三种创建命令的方法:
- 创建Command子类
- 使用 Manager 实例的@command修饰符
- 使用 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脚本扩展的使用(八)的更多相关文章
- 玩程序 之 一 . 字符串处理工具(可通过C#脚本扩展)
平常喜欢写点小东西玩玩,既可以娱乐自己满足自己的虚荣心,又可以方便工作和学习,今天且拿出一个来,与大家一起分享! 1. 软件介绍 言归正传,先看看需求,有这样一串字符串 abc,def,ghi,jk ...
- 适用于 Windows 的自定义脚本扩展
自定义脚本扩展在 Azure 虚拟机上下载并执行脚本. 此扩展适用于部署后配置.软件安装或其他任何配置/管理任务. 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 A ...
- 015-elasticsearch5.4.3【五】-搜索API【四】Joining 多文档查询、GEO查询、moreLikeThisQuery、script脚本查询、span跨度查询
一.Joining 多文档查询 joining query 像Elasticsearch这样的分布式系统中执行完整的SQL样式连接非常昂贵.相反,Elasticsearch提供两种形式的连接,旨在水平 ...
- 在html中添加script脚本的方法和注意事项
在html中添加script脚本有两种方法,直接将javascript代码添加到html中与添加外部js文件,这两种方法都比较常用,大家可以根据自己需要自由选择 在html中添加<script& ...
- 使用自定义脚本扩展程序自动执行 VM 自定义任务
在 Build 开发者大会上推出VM 扩展程序的其中一个称为"自定义脚本扩展程序",它支持 PowerShell.如果这是您第一次访问这些博客,可能需要查看以前的博客,请单击 ...
- C#用正则表达式去掉Html中的script脚本和html标签
原文 C#用正则表达式去掉Html中的script脚本和html标签 /// <summary> /// 用正则表达式去掉Html中的script脚本和html标签 ...
- 使用PrintWriter out=response.getWriter();输出script脚本时乱码解决
使用PrintWriter out=response.getWriter();输出script脚本时乱码解决 最近遇到了一个奇怪的事情,仅仅用out.print("<script ty ...
- 使用lucene query的CharFilter 去掉字符中的script脚本和html标签
1.准备数据,这里我从数据库读取一个带有html标签和script脚本的数据
- node Cheerio 获取script脚本里的数据
const cheerio = require('cheerio'); const $ = cheerio.load(html); // your html//如果有多少script脚本标签使用循环来 ...
随机推荐
- 【Linux】【Services】【Disks】zfs
1. 简介: 据说zfs有去除重复数据的功能,无良人士继续要求吧samba共享盘使用的centos7上自带的xfs改成zfs,并且开启去重功能.samba配置见 http://www.cnblogs. ...
- BS版本的TCP程序
// 使用Socket对象中的方法getInputStream,获取到网络字节输入流InputStream对象 InputStream is = socket.getInputStream();// ...
- Mybatis-Plus默认主键策略导致自动生成19位长度主键id的坑
原创/朱季谦 某天检查一位离职同事写的代码,发现其对应表虽然设置了AUTO_INCREMENT自增,但页面新增功能生成的数据主键id很诡异,长度达到了19位,且不是从1开始递增的-- 我检查了一下,发 ...
- JavaScript中的NaN
论装逼我只服NaN 首先这逼自己都不愿意等于自己 console.log(NaN == NaN); // false 这逼够嫌弃自己的 其次这逼本身的意思是非数字就是NaN 然鹅typeof NaN结 ...
- LuoguP7080 [NWRRC2013]Ballot Analyzing Device 题解
Content 有 \(n\) 名选手参加一个比赛,有 \(m\) 个人为他们投票.第 \(i\) 个人的投票情况用一个长度为 \(n\),并且仅包含 . 和 X 两个字符的字符串,其中,如果第 \( ...
- SQL Server中的函数
字符串函数 日期函数 数学函数 系统函数
- 【C语言】Socket发送HTTP-TCP请求,数据有字符串插入
问题描述: 场景:编写Socket接口,向LOKI发送POST请求查询数据 BUG发现位置:通过cJSON读取时间戳,发现被截断. 现象:通过read()去读取返回的数据,数据行中被插入字符:如下 c ...
- 【LeetCode】NO.376 摆动序列 (Python) [贪心算法]
376. 摆动序列 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 .第一个差(如果存在的话)可能是正数或负数.仅有一个元素或者含两个不等元素的序列也视作摆动序列. 例 ...
- Python处理utf-8 添加和删除BOM头
以下代码只处理了assic和utf8文件.其它文件编码为保险起见并未加入支持. 参数 exts 需要处理文件的扩展名 folders 需要处理的文件夹及子目录 处理目录为当前目录运行:添加bom头 p ...
- c++之面试题(2)实现字符串的分割函数SplitStr
题目描述 3.实现一个将字符串按指定字符分隔的函数,形式已经确定如下,请完成标有"//请补充"的内容. 说明:返回值为是否找到分割符(true找到,false未找到),当未找到分割 ...