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对象的深拷贝和浅拷贝详解
Aug 25 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
Apr 08 Python
Python实现对excel文件列表值进行统计的方法
Jul 25 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
python 循环while和for in简单实例
Aug 16 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
mac使用python识别图形验证码功能
Jan 10 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
浅谈django 重载str 方法
May 19 Python
python的pip有什么用
Jun 17 Python
Python Pytorch查询图像的特征从集合或数据库中查找图像
Apr 09 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
2012/07/31 PHP
PHP 正则表达式小结
2015/02/12 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
微信小程序云开发详细教程
2019/05/16 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
浅谈Python的异常处理
2016/06/19 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
Python编程pygal绘图实例之XY线
2017/12/09 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
中层干部竞争上岗演讲稿
2014/01/13 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL
python 如何用terminal输入参数
2021/05/25 Python