Flask之flask-script模块使用


Posted in Python onJuly 26, 2018

Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任务;使得脚本和系统分开;

Flask Script和Flask本身的工作方式类似,只需定义和添加从命令行中被Manager实例调用的命令;

官方文档:http://flask-script.readthedocs.io/en/latest/

创建并运行命令

首先,创建一个Python模板运行命令脚本,可起名为manager.py;

在该文件中,必须有一个Manager实例,Manager类追踪所有在命令行中调用的命令和处理过程的调用运行情况;

Manager只有一个参数——Flask实例,也可以是一个函数或其他的返回Flask实例;

调用manager.run()启动Manager实例接收命令行中的命令;

#-*-coding:utf8-*- 
from flask_script import Manager 
from debug import app 
 
manager = Manager(app) 
 
if __name__ == '__main__': 
 manager.run()

其次,创建并加入命令;

有三种方法创建命令,即创建Command子类、使用@command修饰符、使用@option修饰符;

第一种——创建Command子类

Command子类必须定义一个run方法;

举例:创建Hello命令,并将Hello命令加入Manager实例;

from flask_script import Manager ,Server
from flask_script import Command 
from debug import app 
 
manager = Manager(app) 


class Hello(Command): 
 'hello world' 
 def run(self): 
  print 'hello world' 

#自定义命令一:
manager.add_command('hello', Hello()) 
# 自定义命令二:

manager.add_command("runserver", Server()) #命令是runserver
if __name__ == '__main__': 
 manager.run()

执行如下命令:

python manager.py hello
> hello world

 python manager.py runserver
> hello world

第二种——使用Command实例的@command修饰符

#-*-coding:utf8-*- 
from flask_script import Manager 
from debug import app 
 
manager = Manager(app) 
 
@manager.command 
def hello(): 
 'hello world' 
 print 'hello world' 
 
if __name__ == '__main__': 
 manager.run()

该方法创建命令的运行方式和Command类创建的运行方式相同;

python manager.py hello
> hello world

第三种——使用Command实例的@option修饰符

复杂情况下,建议使用@option;

可以有多个@option选项参数;

from flask_script import Manager 
from debug import app 
 
manager = Manager(app) 
 
@manager.option('-n', '--name', dest='name', help='Your name', default='world') #命令既可以用-n,也可以用--name,dest="name"用户输入的命令的名字作为参数传给了函数中的name
@manager.option('-u', '--url', dest='url', default='www.csdn.com') #命令既可以用-u,也可以用--url,dest="url"用户输入的命令的url作为参数传给了函数中的url

def hello(name, url): 
'hello world or hello <setting name>' 
 print 'hello', name 
 print url 
 
if __name__ == '__main__': 
 manager.run()

运行方式如下:

python manager.py hello
>hello world
>www.csdn.com

python manager.py hello -n sissiy -u www.sissiy.com
> hello sissiy
>www.sissiy.com

python manager.py hello -name sissiy -url www.sissiy.com
> hello sissiy
>www.sissiy.com

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python错误提示:[Errno 24] Too many open files的分析与解决
Feb 16 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
django中的HTML控件及参数传递方法
Mar 20 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
Apr 02 Python
python利用7z批量解压rar的实现
Aug 07 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
关于python中plt.hist参数的使用详解
Nov 28 Python
解决阿里云邮件发送不能使用25端口问题
Aug 07 Python
python 实现简易的记事本
Nov 30 Python
Django url 路由匹配过程详解
Jan 22 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 Python
Python可视化神器pyecharts之绘制地理图表练习
Jul 07 Python
对tf.reduce_sum tensorflow维度上的操作详解
Jul 26 #Python
TensorFlow用expand_dim()来增加维度的方法
Jul 26 #Python
Python迭代器与生成器基本用法分析
Jul 26 #Python
Python实现矩阵相乘的三种方法小结
Jul 26 #Python
python实现泊松图像融合
Jul 26 #Python
python中的decorator的作用详解
Jul 26 #Python
python opencv实现旋转矩形框裁减功能
Jul 25 #Python
You might like
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
php UBB 解析实现代码
2011/11/27 PHP
那些年一起学习的PHP(三)
2012/03/22 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
img标签中onerror用法
2009/08/13 Javascript
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
python如何制作缩略图
2019/04/30 Python
python实现超市商品销售管理系统
2019/10/25 Python
pymysql模块的操作实例
2019/12/17 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
浅析HTML5 Landmark
2020/09/11 HTML / CSS
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
数据库面试要点基本概念
2013/10/31 面试题
周鸿祎:教你写创业计划书
2013/12/30 职场文书
手机银行营销方案
2014/03/14 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
停电通知范文
2015/04/16 职场文书