首页 > 代码库 > Flask Web Development - Flask插件机制&Flask-Script
Flask Web Development - Flask插件机制&Flask-Script
本节取自part I chapter 2的后半部分,跳过了关于request与response具体交互设计细节内容。主要通过Flask-Script插件让读者对于插件系统有个简单认识。
Flask注重拓展性,社区里已经有很多插件可供选择,当然也可以使用python标准库或者其他的各种库。
Flask-Script
Flask-Script这个插件,是用来增加Flask应用的命令行参数的,它本身自带了一些通用的选项,也支持自定义的命令。这功能可能类似于python标准库中的argparse。
之前提到过,Flask自带一个开发环境用的server,这个server支持一些启动参数配置,但是这些配置只能通过在启动时作为app.run()
参数传入。这非常不方便,比较理想的配置方式是通过脚本命令行参数的方式传入。下面通过Flask-Script来实现这个功能。
安装很简单:
$ pip install flask-script
下面给之前写的hello.py脚本增加一些命令行参数,省略了一些代码:
from flask.ext.script import Manager manager = Manager(app) # ... if __name__ == ‘__main__‘: manager.run()
Flask的插件在安装好后,都可以通过flask.ext
这个命名空间引入。Flask-Script可以提供一个Manager
类,通过flask.ext.script
可以引入。
通过向构造器传入应用实例来初始化插件里的实例,比如上面的Manager
,这是Flask插件的常用初始化方式。从构造器得到的实例,就可以视情况不同正常使用了。现在应用通过manager.run()
启动,命令行参数在此处解析。
注:目前代码是GitHub上的2c版本,切换tag可以查看。
运行hello.py
,可以发现现在应用多了一些基本的命令行参数:
$ python hello.py usage: hello.py [-h] {shell,runserver}... positional arguments: {shell,runserver} shell Runs a Python shell inside Flask application context. runserver Runs the Flask development server i.e. app.run() optional arguments: -h, --help show this help message and exit
shell
命令可以在应用上下文中打开一个Python的shell,你可以在里面处理一些维护任务或测试。
runserver
命令可以启动server,默认开始debug模式,还有很多参数可选:
$ python hello.py runserver --help usage: hello.py runserver [-h] [-t HOST] [-p PORT] [--threaded] [--processes PROCESSES] [--passthrough-errors] [-d] [-r] Runs the Flask development server i.e. app.run() optional arguments: -h, --help show this help message and exit -t HOST, --host HOST -p PORT, --port PORT --threaded --processes PROCESSES --passthrough-errors -d, --no-debug -r, --no-reload
--host
参数可以指定server监听的连接,默认监听的localhost(一般是127.0.0.1)。尝试修改:
$ python hello.py runserver --host 0.0.0.0 * Running on http://0.0.0.0:5000/ * Restarting with reloader
现在处于同网络中的任何计算机都可以通过访问http://a.b.c.d:5000
来访问这个server,a.b.c.d
是运行server的计算机在这个网络中的IP。
注:下次是模板机制的说明,重点!Flask返回的response全靠这个机制。
Flask Web Development - Flask插件机制&Flask-Script