Flask - 应用基础
Flask – 你的第一个应用
Section titled “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)- 导入
Flask: 我们首先导入flask包中所需的类。 - 创建
app实例: 我们创建Flask类的一个实例。这个实例就是我们的 WSGI (Web Server Gateway Interface) 应用。__name__参数是一个标准的 Python 变量,它保存当前模块的名称。Flask 使用它来确定应用的根路径,这有助于查找相关的资源,如模板和静态文件。 - 定义一个路由(
@app.route):@app.route('/')装饰器将后面的函数(hello_world)注册为处理根 URL (/) 的请求。 - 视图函数: 当
/URL 接收到请求时,会调用hello_world()函数。它只返回字符串 ‘Hello, World!’。这个字符串将被作为 HTTP 响应体发送回客户端(例如,网页浏览器)。 - 运行检查(
if __name__ == '__main__':): 这个标准的 Python 构造确保了块内的代码仅在脚本被直接执行时运行(例如,通过运行python hello.py)。它阻止了脚本被导入到另一个模块时启动服务器。 - 启动服务器(
app.run()): 这个方法启动 Flask 内置的开发 Web 服务器。它监听传入的请求并将它们路由到相应的视图函数。
-
确保你的虚拟环境已激活。
-
打开你的终端,切换到保存
hello.py文件的目录。 -
使用 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: ...这表明开发服务器正在运行。
- 打开你的网页浏览器,访问显示的 URL:
http://127.0.0.1:5000/(或http://localhost:5000/)。
你应该在页面上看到文本 ‘Hello, World!’。
我们使用 app.run(debug=True) 启动了服务器。启用调试模式在开发过程中提供了多项好处:
- 自动重载: 当你保存代码更改时,服务器会自动重启。这省去了你在每次修改后手动停止和启动服务器的麻烦。
- 交互式调试器: 如果在请求过程中发生错误,Flask 会在浏览器中显示详细的 traceback(追踪信息),允许你检查发生故障时的代码、变量和执行堆栈。这对于诊断问题非常有帮助。
- 安全警告: 切勿在生产环境中运行启用了
debug=True的 Flask 应用!交互式调试器允许执行任意代码,这带来了重大的安全风险。
app.run() 参数
Section titled “app.run() 参数”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)