官方文档 :http://flask-script.readthedocs.io/en/latest/
创建运行命令:
首先,创建一个Python模板运行命令脚本,可起名为manager.py;
导入我们需要的模块flask_script(如若并未安装请执行: pip install flask_script),安装完成后即可导入。
后面导入flask模块也一样;
Manager只有一个参数-Flask实例,也可以是一个函数或其他的返回Flask实例;
调用manager.run()启动Manager实例接收命令行中的命令
flask_script模块中有几个我们常用的创建命令的方法,即创建Command子类、使用@command修饰符、使用@option修饰符;
1,Command 子类
command子类必须定义一个run方法。
举例:创建一个Hello命令加入manage实例中
manager=Manager(app)这里实现一个manager实例,下面一步是我自己的端口号别占用所以自定义了一个开发时使用的端口号。由上可见我们定义了一个Hello类继承了Command,即在此时Hello成为了Command的子类,
我们定义一个run方法,这是必须的!
自定义命令一:
manager.add_command('hello', Hello()),把子类Hello定义命令为hello
自定义命令二:
manager.add_command('runserver', Server(use_debugger=True, host='0.0.0.0', port=1211)),这里我由于默认的5000端口被占用了,所以自定义了一个1211端口号。
如若没被占用即可这样写:manager.add_command('runserver',Server()),默认的5000端口
依次运行Python manage.py runserver 和 python manage.py hello
我们只是执行hello这个命令就会进入Hello这个子类依次往下执行,而执行runserver 则只是执行了run 方法。2,@command修饰符
我们使用@Command修饰符就比较简单了
使用修饰符来定义一个hello_world()命令,只需要像装饰器那样直接写在一个函数前面就行,注意不能和方法分开!输出结果如下:
运行结果如下: 因为前面我定义了一个子类Hello基于command,所以我这里在使用修饰符的时候给予一点区别,当然Hello_world函数会继承Hello这个基类自然会打印“hello world222+2”。如若不需要Hello这个基类,上面直接可以不写或者屏蔽掉就行。3,@option
复杂情况下,建议使用@option;
可以有多个@option选项参数;
上面的-n 和 --name 主要就是用于执行命令的时候传参的一个执行标示执行结果如下:
分别用3种方式执行了这个命令,第一种是没传参,第二使用简写方式传参,第三种是用全程的方式!
网友评论