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+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
Python制作词云的方法
Jan 03 Python
Python+matplotlib实现填充螺旋实例
Jan 15 Python
python3实现windows下同名进程监控
Jun 21 Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
Jun 19 Python
python实现递归查找某个路径下所有文件中的中文字符
Aug 31 Python
给大家整理了19个pythonic的编程习惯(小结)
Sep 25 Python
Numpy中对向量、矩阵的使用详解
Oct 29 Python
Python如何使用OS模块调用cmd
Feb 27 Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 Python
python如何对链表操作
Oct 10 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的安全策略
2006/10/09 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
javascript的渐进增强与平稳退化浅谈
2013/11/12 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
javascript实用方法总结
2015/02/06 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
HTML的select控件美化
2017/03/27 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
详解Python中列表和元祖的使用方法
2015/04/25 Python
PyQt5主窗口动态加载Widget实例代码
2018/02/07 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
python实现自动打卡的示例代码
2020/10/10 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
linux面试题参考答案(4)
2014/09/21 面试题
就业推荐自我鉴定
2013/10/06 职场文书
工程力学硕士生的自我评价范文
2013/11/16 职场文书
护士毕业生自我鉴定
2014/02/08 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
政府四风问题整改措施
2014/10/04 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
见习报告格式要求
2014/11/04 职场文书
中学图书馆工作总结
2015/08/11 职场文书
小学校本教研总结
2015/08/13 职场文书