Skip to content

Flask - 应用基础

让我们创建一个微型的 Flask 应用来验证你的设置并理解基本结构。

创建一个名为 hello.py(或其他任何 .py 文件名)的文件,并添加以下代码:

# 1. 导入 Flask 类
from flask import Flask
# 2. 创建 Flask 类的实例
# __name__ 告诉 Flask 在哪里查找模板和静态文件等资源。
app = Flask(__name__)
# 3. 使用 route() 装饰器定义一个路由
# 这将 URL '/' 绑定到 hello_world 函数。
@app.route('/')
def hello_world():
# 4. 这个函数是视图函数。
# 它返回将发送给浏览器的响应。
return 'Hello, World!'
# 5. 检查脚本是否直接执行(而不是被导入)
if __name__ == '__main__':
# 6. 使用内置的开发服务器运行应用。
# debug=True 启用调试模式(下文解释)。
app.run(debug=True)
  1. 导入 Flask: 我们首先导入 flask 包中所需的类。
  2. 创建 app 实例: 我们创建 Flask 类的一个实例。这个实例就是我们的 WSGI (Web Server Gateway Interface) 应用。__name__ 参数是一个标准的 Python 变量,它保存当前模块的名称。Flask 使用它来确定应用的根路径,这有助于查找相关的资源,如模板和静态文件。
  3. 定义一个路由(@app.route): @app.route('/') 装饰器将后面的函数(hello_world)注册为处理根 URL (/) 的请求。
  4. 视图函数: 当 / URL 接收到请求时,会调用 hello_world() 函数。它只返回字符串 ‘Hello, World!’。这个字符串将被作为 HTTP 响应体发送回客户端(例如,网页浏览器)。
  5. 运行检查(if __name__ == '__main__':): 这个标准的 Python 构造确保了块内的代码仅在脚本被直接执行时运行(例如,通过运行 python hello.py)。它阻止了脚本被导入到另一个模块时启动服务器。
  6. 启动服务器(app.run()): 这个方法启动 Flask 内置的开发 Web 服务器。它监听传入的请求并将它们路由到相应的视图函数。
  1. 确保你的虚拟环境已激活。

  2. 打开你的终端,切换到保存 hello.py 文件的目录。

  3. 使用 Python 解释器运行脚本:

python hello.py

你应该看到类似以下的输出(具体的地址和端口可能略有不同):

* Serving Flask app 'hello' (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: ...

这表明开发服务器正在运行。

  1. 打开你的网页浏览器,访问显示的 URL:http://127.0.0.1:5000/(或 http://localhost:5000/)。

你应该在页面上看到文本 ‘Hello, World!’。

我们使用 app.run(debug=True) 启动了服务器。启用调试模式在开发过程中提供了多项好处:

  • 自动重载: 当你保存代码更改时,服务器会自动重启。这省去了你在每次修改后手动停止和启动服务器的麻烦。
  • 交互式调试器: 如果在请求过程中发生错误,Flask 会在浏览器中显示详细的 traceback(追踪信息),允许你检查发生故障时的代码、变量和执行堆栈。这对于诊断问题非常有帮助。
  • 安全警告: 切勿在生产环境中运行启用了 debug=True 的 Flask 应用!交互式调试器允许执行任意代码,这带来了重大的安全风险。

app.run() 方法接受几个可选参数:

参数描述
host要监听的主机名。默认为 '127.0.0.1' (localhost),表示服务器只能从你自己的计算机访问。设置为 '0.0.0.0' 可使服务器从网络上的其他设备访问(请谨慎使用)。
port要监听的端口号。默认为 5000。
debug设置为 True 以启用调试模式。如果 FLASK_ENV 环境变量未设置为 development,则默认为 False。
options转发给底层 Werkzeug 服务器的其他选项。

例如,要在端口 8080 上运行并使其在你的网络上可访问:

if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080, debug=True)