1 搭设开发环境
1.1 创建应用目录
$ mkdir helloflask
$ cd hello
1.2 创建虚拟环境
虚拟环境非常有用,可以避免你安装的 Python 版本和包与系统预装的发生冲突。为每个项目单独创建虚拟环境,可以保证应用只能访问所在虚拟环境中的包,从而保持全局解释器的干净整洁,使其只作为创建更多虚拟环境的源。
安装 pipenv:
$ pip install pipenv
使用 pipenv install 命令为当前项目创建虚拟环境:
$ pipenv install
显式激活虚拟环境:
$ pipenv shell
在 Windows 系统中使用 pipenv shell 激活虚拟环境时,虽然激活成功,但是命令行提示符前不会显示虚拟环境名称。
退出虚拟环境:
$ exit
考虑到 Windows 系统下命令行的问题,会搞不清楚是否处于虚拟环境中,推荐使用 pipenv run 命令,可以在不显式激活虚拟环境的情况下,使用虚拟环境下的各种命令。
具体如下图所示:
1.3 安装 Flask
$ pipenv install flask
2 Hello, Flask!
2.1 创建脚本
在 helloflask 目录下创建 app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello Flask!</h1>'
2.2 启动服务器
$ pipenv run flask run (如果提前激活了虚拟环境,直接 flask run 就可以了)
flask run 命令运行的开发服务器默认会监听 http://127.0.0.1:5000 地址,当我们在浏览器访问该地址,会看到网页上显示 Hello Flask!。
2.3 自动发现主模块
因为我们的主模块命名为 app.py,所以 flask run 会自动在其中寻找程序实例。如果我们把 app.py 改名为 hello.py,再运行 flask run,就会出现错误了:
错误提示当前目录下没找到 app.py 和 wsgi.py 模块,也没有设置 FLASK_APP 环境变量值。
2.4 使用 python-dotenv 管理环境变量
设置环境变量很麻烦,临时环境变量,只对当前命令行有效,重启电脑后会清除,开发多个不同 Flask 应用,还要不停切换不同的值。
安装 python-dotenv 之后,Flask 在加载环境变量时,优先级是:手动设置的环境变量 > .env 中设置的环境变量 > .flaskenv 中设置的环境变量。
安装 python-dotenv:
$ pipenv install python-dotenv
在当前目录下创建 .env,.flaskenv 文件,Windows 下创建 . 开头的文件,可以用 .env. 作为文件名来创建。
在 .env 中写入:
FLASK_APP = hello.py
再运行 pipenv run flask run,一切顺利。
2.5 设置开发环境
修改 hello.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello World!</h1>'
开发服务器并没有随着文件的改动而重启。
在 .flaskenv 中写入:
FLASK_ENV = development
重启服务器,提示调试模式打开了,这时候再修改文件,服务器就会自动重启。
为了获得更好的体验,我们可以安装 watchdog 来监测文件的变动:
$pipenv install watchdog --dev
因为这个包只在开发时候用到,所以在安装命令后加 --dev 选项。
参考文档
1、《Flask Web 开发实战: 入门、进阶与原理解析》
2、《Flask Web开发:基于Python的Web应用开发实战(第2版)》