Module 02 · Web App Deployment using Flask
Flask - Basic Applications and Routes基础应用与路由
欢迎观看“基础应用与路由”课程。看完本视频后,您将能够:
- 创建并运行一个带有 基本路由 的 Flask 应用程序。
- 解释如何从服务器向客户端 返回 JSON 响应。
- 描述 Flask 中可用的 各种配置选项。
创建和运行第一个 Flask 应用
在创建您的第一个 Flask 应用程序之前,请确保已安装 Flask。
编写服务器代码 (app.py)
- 导入与实例化:
- 首先,从
flask模块中导入Flask** 类**(注意大小写)。 - 接下来,实例化一个
Flask类的对象作为您的应用 (app)。- 构造函数接受一个
Scaffold类的参数。您通常通过传入内置的__name__变量(即应用模块的名称)来设置名称。 - 此名称用于查找文件系统上的资源,并供扩展提供调试信息。
Python
- 构造函数接受一个
from flask import Flask
# 实例化 Flask 应用
app = Flask(__name__)
- 定义路由:
- 使用
@app.route** 装饰器** 来定义一个路由(URL 处理器)。 - 该装饰器接受 路径 作为参数。
- 在被装饰的方法中,您可以 返回文本或 HTML。
Python
@app.route("/")
def hello_world():
# 返回 HTML 消息
return "<b>my first Flask application in action!</b>"
运行应用程序
运行 Flask 应用程序需要设置系统环境变量并执行 flask run 命令。
- 设置环境变量:
FLASK_APP:包含主服务器文件名(例如app.py)。FLASK_ENV:定义运行环境(development或production)。注意:此变量将在 Flask 2.3 中弃用。
Bash
# 在 Linux/macOS
export FLASK_APP=app.py
export FLASK_ENV=development
# 在 Windows (CMD)
set FLASK_APP=app.py
set FLASK_ENV=development
- 执行运行命令:
- 执行
flask run命令来运行应用程序。

Bash
flask run
- Flask 应用程序默认运行在 端口 5000 上。您可以通过
http://localhost:5000访问您的消息。

浏览器验证
当您访问 http://localhost:5000 时:
- 请求方法:HTTP GET
- 响应状态:200 OK(表示成功响应)
- 内容类型:响应头中的
Content-Type为text/html。 - 服务器信息:
Server为 Werkzeug(运行在特定 Python 版本上)。
替代运行配置
您也可以通过命令行参数进行配置,而不是使用环境变量:
- 使用
--app来指定要运行的 Python 文件(例如--app app.py)。 - 添加
--debug来启用开发模式。--debug标志会启用 自动重启(当源文件更改时),这对应用开发非常有用。
Bash
flask run --app app.py --debug
如果您的应用文件名为
app.py并且在当前目录下,您可以省略--app app.py,因为这是 Flask 的默认查找名称。
返回 JSON 响应
Flask 提供了多种方法来从您的应用程序返回 JSON 格式的响应。
1. 返回可序列化对象
- 方法:直接返回一个 可序列化对象,如 Python 字典或列表。
- 原理:Flask 将使用 Python
json模块 自动将该对象序列化为 JSON 并返回给客户端。
Python
@app.route("/json_data")
def get_json():
# 返回一个 Python 字典
return {"message": "Hello from Flask!", "status": 200}
- 结果验证:使用
curl命令测试时,您会看到:- 响应状态:
200 OK - 内容类型:
application/json - 返回内容:正确的 JSON 格式数据。
- 响应状态:
如果您返回一个更复杂的对象(如类实例),请确保它能够被正确序列化。
2. 使用jsonify()方法
- 方法:导入并使用 Flask 提供的
jsonify()方法。 - 用法:
jsonify()接受 键值对 作为输入,并返回一个包含适当 JSON 的响应对象。

Python
from flask import Flask, jsonify # 别忘了导入 jsonify
@app.route("/jsonify_data")
def get_jsonify():
# 使用 jsonify 返回 JSON
return jsonify(message="Hello from jsonify!", status=200)
- 结果:您将获得与直接返回字典相同的结果,状态码为
200 OK,Content-Type为application/json。

Flask 配置选项
除了 FLASK_ENV 和 FLASK_APP 之外,Flask 还提供了各种其他配置选项:
| 配置选项 | 描述 |
|---|---|
| ENV | 指示应用程序运行的环境(production 或 development)。 |
| DEBUG | 启用调试模式(例如,启用调试器和代码自动重载)。 |
| TESTING | 启用测试模式。 |
| SECRET_KEY | 用于 签署会话 (session) cookie 的密钥。 |
| SESSION_COOKIE_NAME | 会话 Cookie 的名称。 |
| SERVER_NAME | 绑定主机和端口(例如 localhost:5000)。 |
| JSONIFY_MIMETYPE | JSON 响应的 MIME 类型,默认为 application/json。 |
提供配置选项的方式
您可以通过多种方式向 Flask 提供配置选项:
- 环境变量:如前面所述的
FLASK_APP和FLASK_ENV。 app.config** 对象**:可以直接在应用实例的config对象中插入配置选项:
Python
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'my-secret-key'
- 从文件加载:可以将配置选项保存在一个单独的 JSON 文件 中,并使用
config对象的from_file()方法加载。 - 从 Python 文件加载:您可以将配置保存在一个独立的 Python 文件中,并使用
app.config.from_pyfile('config.py')加载。
应用程序目录结构(建议)
随着应用规模的增长,建议创建一个 目录结构,而不是将所有内容都放在一个 Python 文件中。一个示例结构如下:

- 主模块目录:用于存放主要源代码。
- 配置 (Config):将所有配置保存在一个单独的文件中。
- 静态 (Static) 目录:用于存储图像、JavaScript 和 CSS 文件等静态资源。
- 模板 (Templates) 目录:用于存储动态内容(Jinja 模板)。
- 测试 (Tests) 目录:存放所有测试文件。
- 虚拟环境:用于安装正确版本的依赖项并激活。
知识总结
在本视频中,您学到了:
- 通过实例化
Flask** 类** 来创建服务器。 - 使用
@app.route** 装饰器** 创建 URL 处理器。 - 通过返回字符串消息或使用
jsonify()** 方法** 来返回 JSON 对象。 - 可以通过以下方式设置应用程序配置:
- 环境变量
- Python 文件
- 直接操作
app.config** 对象**

