Flask Web 开发 Flask script 扩展功能 Manager

本文是从csdn找到的,觉得挺棒,分享一下,顺便自己保存

网上看了一下其他前辈的文章,自己再记录下

然后是通过这篇文章看了以后自己做的记录

http://my.oschina.net/lijsf/blog/158828



好,先简单讲讲扩展吧,他是向flask导入外部脚本来运行

而里面这个Manager说简单些,就是在python xxxxx.py 这个语句后面可以加入添加语句进行运行

类似于python m1.py hello

我们来看下面这个例子

首先创建一个app实例

创建Manager的实例manager,参数是app实例

然后通过装饰器manager.command,添加一个命令,而添加的命令,就是下面函数的名字!!!


我们做了如下实验

1:运行此程序,但是后面不带扩展命令

2:运行此程序,后面带扩展命令


我们可以看到由于程序运行是通过manager.run()来实现的,当不带扩展命令的时候,他会提示你目前可以提供的扩展命令有几个

runserver和shell是默认的

hello是我们添加的,就是函数的名字

运行完以后就能打印出not always hello这句话了




然后下面讲到创建命令,可以有3种方式

•创建Command的子类
•使用 @command 修饰符
•使用 @option 修饰符


先讲第一种

他相当于用add_command方法,把你自定义的命令名字(这里是hello),和你Hello()实例的run方法绑定了,这是我自己的理解


或者,你可以直接在manager.run()里面进行强行添加数据,我觉得这个有点硬编码的感觉..............


接着,讲一下命令后面可以跟的附属命令

比如python m1.py hello -?

这个  -? 会获取hello命令的docstring以及相关信息

这里注意,上面转载的文章里面,写错了,他写-h是获取帮助信息,其实是 -?


 


最后一种方法,是用option功能来进行精细控制

而option的参数可以如下:

在Hello这个子类里面,需要调用option_list属性,并用Option来赋值,具体如下

然后就可以用hello 命令后面附加命令来实现变量了




接下来的使用get_option方法。。完全不明白作用在哪里,就记录下吧


另外直接如果函数里面有变量的话,用@command可以直接实现功能

并且我们找到了一些规律

比如当你用  --name allen的时候,他取到的变量是allen

当你用          -n allen的时候,他取到是allen

                     -name的时候,取到的是ame ,注意n和a之间没有空格

                     --name 的话,跟的就是空格后面的变量

其实,你把变量名字改成same,或者dame,任意的,都可以

如果改成same,那么他的附加方法变成-s和--same

dame的话,变成-d和-dame



另外一个碰到的情况是参数内容是布尔值

如下:

但是当变量是布尔值的时候,附加命令只能用如下图中的-b 或者--boolvalue





不过,当参数过多时候,我们觉得还是用option来的方便些,如下编写

option里参数的作用,相当于是将 -n和--name这2个附加命令绑定到name变量上

实际上,你如果把dest='test',而hello(test)这个函数的变量也变成test,一样奏效




当你遇到有2个参数的情况,用option装饰器的情况就会方便多了

如下代码





猜你喜欢

转载自blog.csdn.net/wzx1286474341/article/details/80808092