Hello World

初始目录结构

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 listvenv/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 能被识别。