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脚本标签使用循环来 ...
随机推荐
- highchars操作集合
一.tooltip 与鼠标指针的距离想调整tooltip和鼠标指针的距离,官方api 和中文api中都没写,只有轴 label.distance . 但我觉得应该有这个,看源码果然有 tooltip ...
- Java Log4j 配置文件
### 设置### log4j.rootLogger = debug,stdout,D,E ### 输出信息到控制抬 ### log4j.appender.stdout = org.apache.lo ...
- Selenium和PhantomJS
Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上, ...
- C/C++ Qt 数据库SqlRelationalTable关联表
在上一篇博文中详细介绍了SqlTableModle组件是如何使用的,本篇博文将介绍SqlRelationalTable关联表组件,该组件其实是SqlTableModle组件的扩展类,SqlRelati ...
- 1888-jerry99的数列--factorial
1 #define _CRT_SECURE_NO_WARNINGS 1//jerry99的数列 2 #include<bits/stdc++.h> 3 int prime[40000] = ...
- Jenkins备份
目录 一.目录结构 二.插件备份 一.目录结构 Jenkins的所有数据都是存放在文件中的,所以,Jenins备份其实就是备份Jenkins_HOME目录. JENKINS_HOME目录的机构如下: ...
- react原理分析--this.state修改引起的重新渲染
整理向,非原创,目的是整理出浅显易懂的方向性说明. 比如现有 this.state={name:"小明",age:18} 我们说修改组件的状态要用this.setState()来实 ...
- [WPF] 用 OpacityMask 模仿 UWP 的 Text Shimmer 动画
1. UWP 的 Text Shimmer 动画 在 UWP 的 Windows Composition Samples 中有一个 Text Shimmer 动画,它用于展示如何使用 Composit ...
- [BUUCTF]PWN——[BJDCTF 2nd]r2t4
[BJDCTF 2nd]r2t4 附件 步骤 例行检查,64位,开启了canary和nx 64位ida载入,检索字符串的时候发现了后面函数,shell_addr=0x400626 main函数 可以溢 ...
- 显示摘要任务(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 用熬肥的同学都知道,在熬肥的[文件]>[选项]设置中,[高级]才是最多选项设置的地方: 张同学亦如是说. 比如一个比 ...