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版)》