Flask 第一个应用(一文讲透)

Flask 第一个应用:从零开始搭建你的第一个 Web 项目

你有没有想过,自己也能写一个能运行在浏览器里的网站?不用依赖复杂的前端框架,也不用配置一堆服务器环境,只需要几行代码,就能让一个简单的页面在你的电脑上跑起来。这就是 Flask 的魅力所在。

Flask 是一个轻量级的 Python Web 框架,它设计简洁、易于上手,特别适合初学者快速入门 Web 开发。今天,我们就来手把手带你完成一个真正的 Flask 第一个应用,让你从“零”开始,真正理解 Web 应用是如何工作的。


安装 Flask 环境

在开始之前,你需要确保你的电脑上已经安装了 Python。建议使用 Python 3.7 或更高版本,因为 Flask 对新版本有更好的兼容性。

打开终端(macOS/Linux)或命令提示符(Windows),执行以下命令来安装 Flask:

pip install flask

这条命令会从 Python 的包管理工具 pip 中下载并安装 Flask。你可以把它想象成“下载一个乐高积木包”,里面包含了搭建网站所需的基本零件。

提示:如果你遇到权限问题,可以加上 --user 参数,例如 pip install flask --user,这样会安装到用户目录下,避免系统权限冲突。

安装完成后,验证一下是否成功:

python -c "from flask import Flask; print('Flask 已安装成功')"

如果输出“Flask 已安装成功”,说明环境配置无误,可以进入下一步。


创建第一个 Flask 应用文件

现在我们来创建一个最简单的 Flask 应用。在你的工作目录中新建一个文件,命名为 app.py。这个文件就是你的整个 Web 应用的入口。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    # 返回的字符串会直接显示在浏览器中
    return '<h1>欢迎来到我的第一个 Flask 应用!</h1>'

if __name__ == '__main__':
    # 启动开发服务器,开启调试模式
    app.run(debug=True)

让我们逐行解释这段代码:

  • from flask import Flask:导入 Flask 类,它是整个框架的核心。
  • app = Flask(__name__):创建一个 Flask 应用实例。__name__ 是 Python 的特殊变量,表示当前文件的模块名。Flask 用它来确定应用的根路径。
  • @app.route('/'):这是一个装饰器,用来定义 URL 路由。/ 表示网站的首页,也就是访问 http://127.0.0.1:5000/ 时触发这个函数。
  • def home()::这是一个函数,当访问 / 路径时,Flask 会自动调用它。
  • return '<h1>欢迎来到...</h1>':函数返回一个 HTML 字符串,浏览器会将其渲染成网页内容。
  • if __name__ == '__main__'::这是 Python 的标准入口判断。只有当这个文件被直接运行时,才会执行 app.run()
  • app.run(debug=True):启动开发服务器,并开启调试模式。调试模式在开发阶段非常有用,它会在代码出错时显示详细的错误信息,帮助你快速定位问题。

运行你的第一个 Web 应用

保存 app.py 文件后,回到终端,运行以下命令:

python app.py

你会看到类似下面的输出:

 * Running on http://127.0.0.1:5000
 * Debug mode: on

这说明 Flask 服务器已经启动,正在监听本地的 5000 端口。

现在打开你的浏览器,访问地址:http://127.0.0.1:5000。你应该会看到:

欢迎来到我的第一个 Flask 应用!

这正是我们之前返回的 HTML 内容。你刚刚用 Python 写了一个真正的 Web 页面,而且它只用了不到 10 行代码!


理解路由与视图函数

在 Flask 中,路由(Route)和视图函数(View Function)是两个核心概念。

你可以把路由想象成“门牌号”,比如 http://127.0.0.1:5000/about 就是一个门牌号,而视图函数就是“开门的人”,它负责打开门后告诉你“现在可以进来了”。

我们来加一个新页面,比如“关于我们”:

@app.route('/about')
def about():
    return '<h2>关于这个应用</h2><p>这是我的第一个 Flask 第一个应用,用 Python 写的。</p>'

保存后刷新浏览器访问 http://127.0.0.1:5000/about,你会发现新页面出现了。

小技巧:你可以同时定义多个路由,每个路由对应不同的视图函数。Flask 会根据 URL 自动匹配并调用对应的函数。


使用模板渲染动态内容

虽然直接返回 HTML 字符串可以工作,但随着页面复杂度上升,这种方式会变得难以维护。这时,我们可以使用 Flask 的模板系统(Jinja2)来分离代码和内容。

先创建一个文件夹,命名为 templates,然后在里面创建一个文件:index.html

<!-- templates/index.html -->
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>我的 Flask 应用</title>
</head>
<body>
    <h1>{{ title }}</h1>
    <p>欢迎访问我的网站!当前时间:{{ current_time }}</p>
</body>
</html>

注意:{{ }} 是 Jinja2 模板的语法,用来插入变量。比如 {{ title }} 会被替换成你传入的 title 值。

接着修改 app.py,使用 render_template 函数来加载模板:

from flask import Flask, render_template
import datetime

app = Flask(__name__)

@app.route('/')
def home():
    # 准备传入模板的数据
    context = {
        'title': '欢迎首页',
        'current_time': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    }
    # 渲染模板并返回
    return render_template('index.html', **context)

@app.route('/about')
def about():
    return '<h2>关于这个应用</h2><p>这是我的第一个 Flask 第一个应用,用 Python 写的。</p>'

if __name__ == '__main__':
    app.run(debug=True)

现在刷新浏览器,你会发现页面内容由模板动态生成,更加清晰、易维护。


常见问题与调试技巧

在开发过程中,你可能会遇到一些常见问题。以下是几个典型情况和解决方案:

问题现象 可能原因 解决方法
页面空白或 500 错误 代码语法错误或路径错误 检查终端输出的错误信息,修复 Python 错误
模板找不到 templates 文件夹路径不对或文件名拼写错误 确保文件夹名是 templates,文件名是 .html
页面不刷新 开发服务器缓存 确保 debug=True 已开启,或手动重启服务器
端口被占用 5000 端口已被其他程序占用 改用其他端口,如 app.run(port=5001)

温馨提示:开发阶段建议一直开启 debug=True,它能让你实时看到错误信息,极大提升开发效率。


总结与下一步建议

通过这篇教程,你已经成功完成了 Flask 第一个应用的搭建。从安装环境、编写第一个路由、运行服务器,到使用模板渲染页面,每一步都为你打下了坚实的基础。

Flask 的设计哲学是“最小化”,它不强制你使用任何特定的数据库、模板引擎或前端框架。你可以根据项目需要灵活选择。比如后续你可以学习:

  • 使用 SQLAlchemy 连接数据库
  • 集成 Bootstrap 构建美观界面
  • 添加用户登录与权限控制
  • 部署到服务器(如 Gunicorn + Nginx)

这些进阶内容都建立在你已经掌握的 Flask 第一个应用的基础之上。

记住,每一个伟大的 Web 应用,都是从一个简单的 Hello World 开始的。你现在迈出的第一步,已经比很多人走得更远。

继续写下去吧,下一个 Flask 应用,也许就是你的下一个作品。