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使用reportlab画图示例(含中文汉字)
Dec 03 Python
Python中bisect的用法
Sep 23 Python
用Python的Tornado框架结合memcached页面改善博客性能
Apr 24 Python
Python中pygame的mouse鼠标事件用法实例
Nov 11 Python
pycharm安装图文教程
May 02 Python
python如何读写csv数据
Mar 21 Python
Python常见工厂函数用法示例
Mar 21 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
django 微信网页授权登陆的实现
Jul 30 Python
基于PyQT实现区分左键双击和单击
May 19 Python
python os模块常用的29种方法使用详解
Jun 02 Python
详解Pymongo常用查询方法总结
Jan 29 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
实用函数8
2007/11/08 PHP
php下intval()和(int)转换使用与区别
2008/07/18 PHP
PHP 模拟登陆MSN并获得用户信息
2009/05/16 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
解析ajax事件的调用顺序
2013/06/17 PHP
一个PHP针对数字的加密解密类
2014/03/20 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
用函数式编程技术编写优美的 JavaScript
2006/11/25 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
js的.innerHTML = &quot;&quot;IE9下显示有错误的解决方法
2013/09/16 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
一文了解Vue中的nextTick
2019/05/06 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
python matlibplot绘制3D图形
2018/07/02 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
上海期货面试题
2014/01/31 面试题
环保倡议书
2014/04/14 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书
php访问对象中的成员的实例方法
2021/11/17 PHP
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang