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 相关文章推荐
Pycharm学习教程(4) Python解释器的相关配置
May 03 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
Python中property函数用法实例分析
Jun 04 Python
python中ASCII码和字符的转换方法
Jul 09 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
python采集微信公众号文章
Dec 20 Python
python面试题之列表声明实例分析
Jul 08 Python
python自定义函数def的应用详解
Jun 03 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
python设置 matplotlib 正确显示中文的四种方式
May 10 Python
python之基数排序的实现
Jul 26 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
PHP调用三种数据库的方法(3)
2006/10/09 PHP
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
在thinkphp5.0路径中实现去除index.php的方式
2019/10/16 PHP
jquery 可排列的表实现代码
2009/11/13 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
jquery移动节点实例
2015/01/14 Javascript
jQuery+PHP实现动态数字展示特效
2015/03/14 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
Python匹配中文的正则表达式
2016/05/11 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
Python实现曲线点抽稀算法的示例
2017/10/12 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
为什么称python为胶水语言
2020/06/16 Python
标记环介质访问控制协议
2016/03/27 面试题
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书
人身损害赔偿协议书
2016/03/22 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python