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脚本标签使用循环来 ...
随机推荐
- 数据库系统相关SQL
杀进程 查出所有被锁住的表 select b.owner TABLEOWNER, b.object_name TABLENAME, c.OSUSER LOCKBY, c.USERNAME LOGINI ...
- [MySQL实战-Mysql基础篇]-mysql架构
1.基本组成 下面是mysql的基本架构示意图 图一 图二 我们可以从图上看出,mysql大体分为两个部分,一个是server层,另一个是引擎层. server层中包含了连接器.查询缓存.分析器.优 ...
- ABP.VNext-模块
一.什么是ABP.Vnext? ABP.Vnext是一个基于Asp.Net Core Web应用程序框架.主要目的是用来快速开发Web应用, ABP.Vnext不仅提供完整Web应用程序开发模板,而且 ...
- Tableau如何绘制双柱折线组合图2
一.数据源准备 二.创建计算字段月度-拖拽至列-右键-精确日期 CASE[指标] WHEN "同期"then DATETRUNC('day',[日期])-5 WHEN " ...
- threejs 贴图动画总结
引言 在三维可视化中,会涉及到很多动画,其中贴图动画是其中很重要的一种,本文介绍几种贴图动画的思路,供大家一起探讨. 流动动画 流动动画通过设置贴图的repeat属性,并不断改变贴图对象的offset ...
- SWPUCTF_2019_p1KkHeap(tcache_entry)
花了半天的时间去理解吃透这道题目,也参考了大佬的wp (1条消息) [pwn]SWPUCTF_2019_p1KkHeap_Nothing-CSDN博客. (1条消息) swpuctf2019 p1Kk ...
- jarvisoj_fm(格式字符串)
我又回来了,前几天被timeout问题折磨,还是放弃了 拿到题目还是file一下 看到时32位的程序,于是把程序放入ida*32中 可以看到当x等于4的时候可以拿到shell,上面的printf(bu ...
- 解决Vulnhub靶机分配不到IP问题
没法找到他的 ip,可能是网卡配置问题 (之前打开 .ova 文件默认联网方式是桥接,改成NAT) 在开机选择的时候,摁 e 编辑一下 把 ro 改成 rw single init=/bin/bash ...
- 在React中使用 react-router-dom 编程式路由导航的正确姿势【含V5.x、V6.x】
## react-router-dom 编程式路由导航 (v5) ###### 1.push跳转+携带params参数 ```jsx props.history.push(`/b/child1/${i ...
- CF979A Pizza, Pizza, Pizza!!! 题解
Content 小 S 想把一块披萨切成大小.形状都相同的 \((n+1)\) 块(\(n\) 块分给 TA 的 \(n\) 个朋友,还有一块留给自己),试问最小需要切多少块. 数据范围:\(0\le ...