美文网首页
3.8 Flask-Script

3.8 Flask-Script

作者: yungege | 来源:发表于2019-08-20 10:01 被阅读0次

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方法添加命令。
  3. 使用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
    

相关文章

  • 3.8 Flask-Script

    Flask-Script: Flask-Script的作用是可以通过命令行的形式来操作Flask。例如通过命令跑一...

  • flask-script笔记

    flask-script 使用 Flask-Script 的作用是可以通过命令行的方式来操作 Flask。例如通过...

  • flask-migrate动态迁移数据库

    了解flask_migrate需要先了解flask-script,那么flask-script的作用是什么呢?fl...

  • Flask-Script 扩展

    通过使用Flask-Script扩展,我们可以在Flask服务器启动的时候,通过命令行的方式传入参数。而不仅仅通过...

  • Flask——Flask-script

    Flask作为一个简介的Web开发框架,有很多优点。开发者可以自由选择适合于自己项目的扩展,而不必受制于框架。 但...

  • Flask 常用库整理

    flask-script 为 Flask 提供强大的命令行操作,与 Django shell 类似。 Flask-...

  • Flask插件与资源整理

    flask-script 支持命令行选相 使用示例 flask-bootstrap 集成Bootstrap fla...

  • Flask学习(六)

    Flask-Script 学过Django的同学应该知道在Django里面是通过python manage.py ...

  • Flask

    falsk-script插件 可以实现命令行参数接收 使用流程pip install flask-script初始...

  • flask-migrate 3.0.1 使用

    由于 Flask-Script 长久不维护,且没有适配flask 2.0 以上的版本, 所以 flask-mig...

网友评论

      本文标题:3.8 Flask-Script

      本文链接:https://www.haomeiwen.com/subject/zyrssctx.html