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简单实现TCP包发送十六进制数据的方法
Apr 16 Python
详解Python的Flask框架中的signals信号机制
Jun 13 Python
python自动化脚本安装指定版本python环境详解
Sep 14 Python
python 多线程将大文件分开下载后在合并的实例
Nov 09 Python
Python实现账号密码输错三次即锁定功能简单示例
Mar 29 Python
python操作kafka实践的示例代码
Jun 19 Python
Python如何使用argparse模块处理命令行参数
Dec 11 Python
Python sys模块常用方法解析
Feb 20 Python
200行python代码实现贪吃蛇游戏
Apr 24 Python
基于tensorflow for循环 while循环案例
Jun 30 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 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
PHP lcfirst()函数定义与用法
2019/03/08 PHP
jquery获得下拉框值的代码
2011/08/13 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
2020/11/09 jQuery
微信小程序实现首页弹出广告
2020/12/03 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
python基于openpyxl生成excel文件
2020/12/23 Python
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
教师见习期自我鉴定
2014/04/28 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
python 提取html文本的方法
2021/05/20 Python