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 相关文章推荐
vc6编写python扩展的方法分享
Jan 17 Python
Python ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
python函数中return后的语句一定不会执行吗?
Jul 06 Python
Python实现替换文件中指定内容的方法
Mar 19 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
Python 字符串类型列表转换成真正列表类型过程解析
Aug 26 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
Feb 16 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
Jun 04 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
python 如何读、写、解析CSV文件
Mar 03 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 运行效率总结(提示程序速度)
2009/11/26 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
PHP使用函数用法详解
2018/09/30 PHP
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
Python深入学习之内存管理
2014/08/31 Python
python刷投票的脚本实现代码
2014/11/08 Python
python生成器表达式和列表解析
2016/03/10 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
会计自我鉴定范文
2013/10/06 职场文书
战略合作意向书范本
2014/04/01 职场文书
青年志愿者活动总结
2014/04/26 职场文书
酒桌上的祝酒词
2015/08/12 职场文书