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爬虫
Dec 25 Python
python3中bytes和string之间的互相转换
Feb 09 Python
对python numpy数组中冒号的使用方法详解
Apr 17 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
python 提取key 为中文的json 串方法
Dec 31 Python
python实现大文本文件分割
Jul 22 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 Python
使用Tkinter制作信息提示框
Feb 18 Python
Python argparse模块使用方法解析
Feb 20 Python
Python 去除字符串中指定字符串
Mar 05 Python
python与c语言的语法有哪些不一样的
Sep 13 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
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
dojo随手记 gird组件引用
2011/02/24 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
jquery实现动态画圆
2014/12/04 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
Zabbix实现微信报警功能
2016/10/09 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
Python 在函数上添加包装器
2020/07/28 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
一套带网友答案的.NET笔试题
2016/12/06 面试题
金融学专科生自我鉴定
2014/02/21 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
企业承诺书格式范文
2015/04/28 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL