背景
Flask是一个小型框架,没有提供一些重要的功能,例如数据库和用户认证,但是具有很强的扩展性,所以开发者可以自由选择适合的包,或者自行开发。
使用Flask-Script
拿1.1节启动服务器为例,运行时的命令参数全部填写在脚本文件的app.run()函数中,如果要使用不同的参数即要修改文件再运行,比较麻烦。
幸运的是,社区成员已经开发了解决此类烦恼的扩展–Flask-Script,它自带一组常用选项,而且还支持自定义命令。使用命令pip install flask-script安装后,即可以按以下的例子修改脚本:
from flask import Flask
from flask_script import Manager
app = Flask(__name__)
manager = Manager(app)
...
if __name__ == '__main__':
manager.run()
扩展安装后,模块功能从一个叫flask_***的包中import。扩展的初始化方法如例子见到的:把程序实例app作为参数传递给构造函数,初始化主类的实例。服务器由manager.run()启动,启动后就能解析命令行了。
在启动服务的文件目录下,输入python hello.py,会显示用法信息:
(website) D:\web-project>python manage.py
usage: manage.py [-?] {shell, runserver} ...
positional arguments:
{shell, runserver}
...
在启动服务的文件目录下,输入python hello.py runserver --help,会显示启动服务的用法信息:
(website) D:\web-project>python manage.py runserver --help
usage: manage.py runserver [-?] [-h HOST] [-p PORT] [--threaded]
[--processes PROCESSES] [--passthrough-errors] [-d]
[-D] [-r] [-R] [--ssl-crt SSL_CRT]
[--ssl-key SSL_KEY]
Runs the Flask development server i.e. app.run()
optional arguments:
-?, --help show this help message and exit
-h HOST, --host HOST
-p PORT, --port PORT
...
–host参数是1个很有用的选项,它明确服务器在哪个网络接口上监听来自客户端的连接。
如果不输入–host选项,默认情况下服务器监听localhost上的连接,只接受来自服务器所在计算机发起的连接。如果–host=0.0.0.0,则服务器监听公共网络接口上的连接,允许同网中的其他计算机连接服务器。
(website) D:\web-project>python manage.py runserver --host=0.0.0.0
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with reloader
...
同网中的计算机可以使用http://a.b.c.d:5000/访问web服务器,其中a.b.c.d是web服务器的外网IP地址。