环境安装
$pip install flask
构建最小的应用hello.py
from flask import Flask
# 传递给Flask类的__name__变量是一个Python预定义的变量,它表示当前调用它的模块的名字。
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
- 导入Flask类,该类的实例成为WSGI应用
- 创建Flask类的实例
- 使用route装饰器告诉flask触发的URL
- 返回浏览器显示的信息
运行应用
$ export FLASK_APP=hello.py
$ flask run
* Debug mode: off
* Running on http://127.0.0.1:5000/
这样就启动了一个最简单的内建服务器
启动外部可见的服务器
$ flask run --host=0.0.0.0
复杂一点
创建app/__init__.py文件
应用程序是存在于包中的。 在Python中,包含__init__.py文件的子目录被视为一个可导入的包。 当你导入一个包时,__init__.py会执行并定义这个包暴露给外界的属性。
其一,这里有两个实体名为app。 app包由app目录和__init__.py脚本来定义构成,并在from app import routes语句中被引用。 app变量被定义为__init__.py脚本中的Flask类的一个实例,以至于它成为app包的属性。
其二,routes模块是在底部导入的,而不是在脚本的顶部。 最下面的导入是解决循环导入的问题,这是Flask应用程序的常见问题。 你将会看到routes模块需要导入在这个脚本中定义的app变量,因此将routes的导入放在底部可以避免由于这两个文件之间的相互引用而导致的错误。
from flask import Flask
app = Flask(__name__)
from app import routes
创建app/routes.py
from app import app
@app.route('/')
@app.route('/index')
def index():
return 'Hello, World!'
修改hello.py
from app import app
完成,执行应用
http://localhost:5000/
http://localhost:5000/index
python-dotenv
在终端会话中直接设置的环境变量不会永久生效,因此你不得不在每次新开终端时设定 FLASK_APP 环境变量,从 1.0 版本开始,Flask 允许你设置只会在运行flask命令时自动注册生效的环境变量,要实现这点,你需要安装 python-dotenv:
$ pip install python-dotenv
此时,在项目的根目录下新建一个名为 .flaskenv 的文件,其内容是:
FLASK_APP=hello.py
FLASK_ENV=development
通过此项设置,FLASK_APP就可以自动加载了,如果你钟爱手动设定环境变量,那也不错,只是记得每次启动终端后要设定它。