Flask系列教程(7)——Flask-Script

原创 2017年07月07日 12:20:30
#flask进阶(Flask-Script):

Flask-Script的作用是可以通过命令行的形式来操作Flask。例如通过命令跑一个开发版本的服务器、设置数据库,定时任务等。要使用Flask-Script,可以通过pip install flask-script安装最新版本。首先看一个最简单的例子:

# manage.py

from flask_script import Manager
from your_app import app

manager = Manager(app)

@manager.command
def hello():
    print 'hello'

if __name__ == '__main__':
    manager.run()

我们把脚本命令代码放在一个叫做manage.py文件中,然后在终端运行python manage.py hello命令,就可以看到输出hello了。

定义命令的三种方法:
  1. 使用@command装饰器:这种方法之前已经介绍过。就不过多讲解了。
  2. 使用类继承自Command类:
from flask_script import Command,Manager
from your_app import app

manager = Manager(app)

class Hello(Command):
    "prints hello world"

    def run(self):
        print "hello world"

manager.add_command('hello',Hello())

使用类的方式,有三点需要注意:

  • 必须继承自Command基类。
  • 必须实现run方法。
  • 必须通过add_command方法添加命令。

    1. 使用option装饰器:如果想要在使用命令的时候还传递参数进去,那么使用@option装饰器更加的方便:
@manager.option('-n','--name',dest='name')
def hello(name):
    print 'hello ',name

这样,调用hello命令:

python manage.py -n xt

或者

python manage.py --name xt

就可以输出:

hello xt
添加参数到命令中:
  • option装饰器:以上三种创建命令的方式都可以添加参数,@option装饰器,已经介绍过了。看以下示例介绍展示添加多个参数的方式:
@manager.option('-n', '--name', dest='name', default='joe')
@manager.option('-u', '--url', dest='url', default=None)
def hello(name, url):
    if url is None:
        print "hello", name
    else:
        print "hello", name, "from", url
  • command装饰器:command装饰器也可以添加参数,但是不能那么的灵活,如下示例:
@manager.command
def hello(name="Fred")
    print "hello", name
  • 类继承:类继承也可以添加参数,看以下示例:
from flask_Flask import Comman,Manager,Option

class Hello(Command):
    option_list = (
    Option('--name','-n',dest='name'),
)

    def run(self,name):
        print "hello %s" % name

如果要在指定参数的时候,动态的做一些事情,可以使用get_options方法,示例如下:

class Hello(Command):
    def __init__(self,default_name='Joe'):
        self.default_name = default_name

    def get_options(self):
        return [
        Option('-n','--name',dest='name',default=self.default_name),
        ]

    def run(self,name):
        print 'hello',name

### 如果想深入学习Flask,可以观看这套免费Flask教学视频:Flask入门到项目实战

Flask框架和Flask-Script介绍

一、装饰器decorator 在Python中装饰器,在Java中称为注解; # -*- encoding=UTF-8 ''' * 用来传递任意个无名字参数,这些参数会一个Tuple的形式访问。 *...
  • twc829
  • twc829
  • 2016年08月08日 19:18
  • 8102

Flask 扩展: Flask-Script

Flask-Script
  • sinat_29315627
  • sinat_29315627
  • 2017年06月06日 15:17
  • 380

Python Flask script 使用

import os from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy from flask.ext.script ...
  • griffin23
  • griffin23
  • 2015年10月12日 16:04
  • 1771

flask_script的几个具体用法

flask框架中manage.py的常用设计#!/usr/bin/env python import os from app import create_app, db from app.models...
  • u010445540
  • u010445540
  • 2016年10月28日 16:26
  • 2596

Flask系列教程(2)——URL和视图

flask入门(URL)flask简介:flask是一款非常流行的Python Web框架,出生于2010年,作者是Armin Ronacher,本来这个项目只是作者在愚人节的一个玩笑,后来由于非常受...
  • huangyong1314
  • huangyong1314
  • 2017年07月07日 12:01
  • 1648

Flask系列教程(三)---------------通过模板创建视图(一)

在本章中,我们会使用Flask Jinja内置的模板语言,基于SQLAlchemy模型动态地创建HTML页面。我们会学到Jinja的一些函数,它们可以自动生成HTML,还可以对数据进行某些修改后再将其...
  • happyAnger6
  • happyAnger6
  • 2017年01月05日 22:50
  • 847

Flask 扩展 Flask-Script

Flask想要扩展其他的功能需要使用到Flask-Scriptfrom flask.ext.script import Manager # 所有Flask扩展都实在flask.ext的命名空间下 ma...
  • claroja
  • claroja
  • 2017年11月24日 10:45
  • 59

《VR入门系列教程》之7---DK2和Crescent Bay

The DK2     于2014年春,Oculus发布了第二代开发版头显设备,代号为DK2。与DK1相比,Oculus Rift DK2的外观有很大改进,并且轻了许多,体积仍然比较大,可以罩住...
  • liulong1567
  • liulong1567
  • 2016年01月18日 19:40
  • 2680

《Flask development》flask-script插件

用 pip 安装:(venv) $ pip install flask-script 使用: ... from flask import Flask from flask.ext.script i...
  • huang5487378
  • huang5487378
  • 2017年03月26日 23:00
  • 384

Flask Web 开发 Flask script 扩展功能 Manager

书的第一部分看完了,扩展功能就这么在看,不过还是有点概念模糊 网上看了一下其他前辈的文章,自己再记录下 然后是通过这篇文章看了以后自己做的记录 http://my.oschina.net/lijs...
  • bestallen
  • bestallen
  • 2016年08月19日 15:04
  • 7029
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Flask系列教程(7)——Flask-Script
举报原因:
原因补充:

(最多只允许输入30个字)