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基础之包的导入和__init__.py的介绍
Jan 08 Python
Python使用itertools模块实现排列组合功能示例
Jul 02 Python
Python import与from import使用及区别介绍
Sep 06 Python
python获取本机所有IP地址的方法
Dec 26 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
Python实现字典按key或者value进行排序操作示例【sorted】
May 03 Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 Python
python生成器用法实例详解
Nov 22 Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
Jun 23 Python
用Python制作mini翻译器的实现示例
Aug 17 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间隔一段时间执行代码的方法
2014/12/02 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
ext实现完整的登录代码
2008/08/08 Javascript
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
Vue AST源码解析第一篇
2017/07/19 Javascript
利用JavaScript如何查询某个值是否数组内
2017/07/30 Javascript
vue组件name的作用小结
2018/05/23 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
Python中的True,False条件判断实例分析
2015/01/12 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
python 实现登录网页的操作方法
2018/05/11 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
Python进阶之全面解读高级特性之切片
2019/02/19 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
java字符串格式化输出实例讲解
2021/01/06 Python
完美主义个人的自我评价
2014/02/17 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
甘南现象心得体会
2014/09/11 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP