Flask-Script

Flask-Script

  • Flask-Script
    • Flask-Script的作用是可以通过命令行的形式来操作Flask。例如通过命令跑一个开发版本的服务器、设置数据库,定时任务等。要使用Flask-Script,可以通过pip install flask-script安装最新版本
      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 juran
      python manage.py --name juran
      
  • 添加参数到命令中
    • 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)
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值