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实现对PPT文件进行截图操作的方法
Apr 28 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
在Python中分别打印列表中的每一个元素方法
Nov 07 Python
Python数据类型之String字符串实例详解
May 08 Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
Python Web框架之Django框架Model基础详解
Aug 16 Python
解决Tensorflow 内存泄露问题
Feb 05 Python
Python的赋值、深拷贝与浅拷贝的区别详解
Feb 12 Python
使用pandas实现筛选出指定列值所对应的行
Dec 13 Python
整理Python中常用的conda命令操作
Jun 15 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时间戳使用实例代码
2008/06/07 PHP
PHP 组件化编程技巧
2009/06/06 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
通达OA公共代码 php常用检测函数
2011/12/14 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
PHP实现简易图形计算器
2020/08/28 PHP
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
pytorch标签转onehot形式实例
2020/01/02 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
python 字符串格式化的示例
2020/09/21 Python
html5超简单的localStorage实现记住密码的功能实现
2017/09/07 HTML / CSS
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
蒂娜商店:Tiina the Store
2019/12/07 全球购物
网络通讯中,端口有什么含义,端口的取值范围
2012/11/23 面试题
搞笑婚礼主持词
2014/03/13 职场文书
租房协议书样本
2014/08/20 职场文书
幼儿教师辞职信
2015/02/27 职场文书
mysql优化
2021/04/06 MySQL
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL