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 从远程服务器下载日志文件的程序
Feb 10 Python
python二叉树遍历的实现方法
Nov 21 Python
Python基于scrapy采集数据时使用代理服务器的方法
Apr 16 Python
python flask安装和命令详解
Apr 02 Python
python使用参数对嵌套字典进行取值的方法
Apr 26 Python
Python3批量生成带logo的二维码方法
Jun 24 Python
flask框架自定义url转换器操作详解
Jan 25 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
python实现密度聚类(模板代码+sklearn代码)
Apr 27 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
Jun 24 Python
Python 使用office365邮箱的示例
Oct 29 Python
jupyter notebook远程访问不了的问题解决方法
Jan 11 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 和 MySQL 基础教程(二)
2006/10/09 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
vue2.0 elementUI制作面包屑导航栏
2018/02/22 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
2018/05/09 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
python不带重复的全排列代码
2013/08/13 Python
python数据结构之二叉树的遍历实例
2014/04/29 Python
用Python进行TCP网络编程的教程
2015/04/29 Python
python中list常用操作实例详解
2015/06/03 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
python实现用户名密码校验
2020/03/18 Python
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
社团招新策划书
2014/02/04 职场文书
2014年创卫实施方案
2014/02/18 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
2015年三好一满意工作总结
2015/07/24 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers