初始目录结构
flask-demo\
venv\
<virtual environment files>
app\
__init__.py
routes.py
run.py
1 虚拟环境
为了不影响真实环境,我们创建 Python 虚拟环境,用于存放本项目的独占模块。
$ python3 -m venv venv
注意该命令中有两个 venv ,前者是模块名称,后者是虚拟环境目录名称,的确有点绕,不过好在这样的情况只会出现一次。 目录 venv 下会自动生成 bin 、 include 、 lib 、 lib64 、 share 等一堆不言而喻的目录。今后所有的命令都必须指定由目录 venv/bin 下的 python\python3 和 pip\pip3 执行!
$ venv/bin/pip install flask
分别执行命令 pip3 list
和 venv/bin/pip3 list
,对比确认 flask 的安装位置。
2 应用目录
mkdir app
touch app/__init__.py
touch app/routes.py
初始文件 app/__init__.py
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!"
在所有情况下,构建 Flask 实例都应当传递参数 __name__
作为载入其他资源的基准路径。
现在有两个实体都叫做 app 。 app 包是通过 app 目录和 __init__.py
脚本定义的。 app 变量是 __init__.py
脚本中 Flask 类的一个实例,它是 app 包的一个成员。
routes 总是在 __init__.py
末尾导入,避免循环。它用于应对不懂的 URL 。函数上面是两个装饰器,一种 Python 语法糖。装饰器将函数注册为回调函数,当 web 浏览器向其中一个 URL 发起请求, Flask 会调用该函数,并将返回值作为对浏览器的渲染对象。
3 启动脚本
最后,我们需要一个启动脚本 run.py ,记得用 venv/bin/python
运行!
#!venv/bin/python
from app import app
app.run(debug = True)
成功启动后,Hello World 将展示在 http://localhost:5000 和 http://localhost:5000/index ,其他 URL 将会引发 404 错误,因为只有前面两个 URL 能被识别。