Flask 详细讲解 + 实战实例(零基础可学)

Flask 是轻量级、灵活、易上手的 Python Web 框架,没有强制项目结构,非常适合快速开发网站、API、小型应用,也是入门 Web 开发的最佳选择。

我会从核心概念 → 安装 → 基础实例 → 进阶功能(路由、模板、表单、数据库)→ 完整项目一步步带你掌握。


一、Flask 核心基础

1. 什么是 Flask?

  • 基于 Python 的微型 Web 框架(Micro Framework)
  • 自带开发服务器、调试工具
  • 核心只包含:路由、请求 / 响应、模板引擎(Jinja2)
  • 扩展丰富:数据库、登录、表单、RESTful API 等

2. 适用场景

  • 个人博客、小型官网
  • 接口服务(API)
  • 原型快速开发
  • 中小型 Web 应用

3. 安装 Flask

打开命令行,执行:

bash

运行

复制代码
pip install flask

二、第一个 Flask 程序(Hello World)

最简代码

python

运行

复制代码
# 导入 Flask 类
from flask import Flask

# 创建应用实例
app = Flask(__name__)

# 路由:访问根目录 / 时触发
@app.route('/')
def hello():
    return "Hello Flask!这是我的第一个 Flask 程序"

# 启动程序
if __name__ == '__main__':
    app.run(debug=True)  # debug=True 开启调试模式,修改代码自动重启

运行与访问

  1. 保存为 app.py
  2. 命令行执行:python app.py
  3. 浏览器打开:http://127.0.0.1:5000

效果 :页面显示 Hello Flask!这是我的第一个 Flask 程序


三、Flask 核心知识点(必学)

1. 路由(Route)

路由就是URL 地址 对应 函数,决定用户访问某个网址时执行什么代码。

(1)基础路由

python

运行

复制代码
@app.route('/')         # 首页
@app.route('/about')    # 关于页面
@app.route('/user')     # 用户页面
(2)带参数的路由

python

运行

复制代码
# 接收用户名参数
@app.route('/user/<name>')
def user_info(name):
    return f"欢迎你,{name}!"

# 接收数字参数(限制类型)
@app.route('/age/<int:age>')
def show_age(age):
    return f"你的年龄是:{age}"

访问示例:

  • http://127.0.0.1:5000/user/张三
  • http://127.0.0.1:5000/age/20

2. 请求与响应

Flask 可以接收用户请求(GET/POST),并返回不同内容。

python

运行

复制代码
from flask import request

@app.route('/login', methods=['GET', 'POST'])
def login():
    # GET 请求:显示登录页
    if request.method == 'GET':
        return "请输入账号密码登录"
    # POST 请求:接收表单数据
    else:
        username = request.form.get('username')
        password = request.form.get('password')
        return f"登录成功:用户名={username},密码={password}"

3. 模板渲染(Jinja2)

Flask 使用 Jinja2 模板引擎,可以返回 HTML 页面,而不只是字符串。

步骤:
  1. 项目下新建文件夹 templates(必须叫这个名字)
  2. 在里面新建 index.html
  3. 后端使用 render_template 渲染

后端代码

python

运行

复制代码
from flask import render_template

@app.route('/html')
def show_html():
    # 向模板传递变量
    return render_template('index.html', name="Flask学习者", age=20)

index.html

html

预览

复制代码
<!DOCTYPE html>
<html>
<head>
    <title>Flask模板</title>
</head>
<body>
    <h1>你好,{{ name }}</h1>
    <p>年龄:{{ age }}</p>
</body>
</html>

4. 静态文件(CSS/JS/ 图片)

  1. 新建文件夹 static
  2. 放入 cssjsimages
  3. HTML 中使用:

html

预览

复制代码
<link rel="stylesheet" href="/static/style.css">
<img src="/static/logo.png">

四、进阶实战:完整 Flask 小项目

我们做一个用户信息展示 + 表单提交的完整 Demo。

项目结构

plaintext

复制代码
myflask/
├── app.py          # 主程序
├── static/         # 静态文件
└── templates/      # 模板
    └── index.html  # 首页
    └── user.html   # 用户页

1. app.py 完整代码

python

运行

复制代码
from flask import Flask, render_template, request

app = Flask(__name__)

# 首页
@app.route('/')
def index():
    return render_template('index.html', title="Flask 实战首页")

# 用户信息页面(带参数)
@app.route('/user/<name>')
def user(name):
    # 模拟数据
    user_data = {
        "name": name,
        "age": 22,
        "city": "北京"
    }
    return render_template('user.html', user=user_data)

# 表单提交
@app.route('/form', methods=['GET', 'POST'])
def form():
    if request.method == 'POST':
        username = request.form.get('username')
        email = request.form.get('email')
        return f"提交成功!<br>用户名:{username}<br>邮箱:{email}"
    return render_template('form.html')

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

2. templates/index.html

html

预览

复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>{{ title }}</title>
</head>
<body>
    <h1>欢迎来到 Flask 实战项目</h1>
    <a href="/user/小明">查看小明信息</a><br>
    <a href="/form">表单提交页面</a>
</body>
</html>

3. templates/user.html

html

预览

复制代码
<!DOCTYPE html>
<html>
<head>
    <title>用户信息</title>
</head>
<body>
    <h2>用户详情</h2>
    <p>姓名:{{ user.name }}</p>
    <p>年龄:{{ user.age }}</p>
    <p>城市:{{ user.city }}</p>
    <a href="/">返回首页</a>
</body>
</html>

4. templates/form.html

html

预览

复制代码
<!DOCTYPE html>
<html>
<head>
    <title>表单提交</title>
</head>
<body>
    <h2>用户表单</h2>
    <form method="post">
        用户名:<input type="text" name="username"><br><br>
        邮箱:<input type="email" name="email"><br><br>
        <button type="submit">提交</button>
    </form>
</body>
</html>

运行项目

  1. 运行 app.py
  2. 访问:http://127.0.0.1:5000
  3. 可点击链接跳转到用户页、表单页,体验完整功能

五、Flask 常用扩展(进阶必备)

实际开发中,我们会用扩展快速实现功能:

  1. Flask-SQLAlchemy:数据库操作(ORM)
  2. Flask-Login:用户登录认证
  3. Flask-WTF:表单验证
  4. Flask-RESTful:API 开发
  5. Flask-Bootstrap:快速美化页面

总结

  1. Flask 轻量灵活,适合新手入门和快速开发
  2. 核心:路由 + 视图函数 + 模板 + 请求响应
  3. 项目结构:app.py + templates + static
  4. 可通过扩展实现数据库、登录、API 等高级功能

你已经掌握了 Flask 从 0 到 1 的全部核心知识!

相关推荐
李航19835 分钟前
用 DeepDraw 几何引擎开发建筑设计软件(十):推挤工具
python·3d
万物智能1 小时前
SARADC模数转换—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
前端·后端
花间相见1 小时前
【后端开发|网络编程】—— 五种实时通信方案全解析:短轮询、长轮询、SSE、MQTT、WebSocket
后端·网络协议
VXbishe1 小时前
【课程设计】基于SpringBoot的乡村政务服务系统的设计与实现-计算机毕设77011
javascript·vue.js·spring boot·python·php·课程设计·政务
坤岭1 小时前
LLM应用安全护栏实战
后端
程序猿阿越1 小时前
containerd如何创建Pod
后端·kubernetes·源码阅读
名字还没想好☜1 小时前
Python sqlite3 实战:事务提交、参数化防注入、WAL 并发与 row_factory 取字典
后端·python·编程语言
花间相见1 小时前
【AI应用开发|Agent记忆】—— Codex 与 Claude Code 持久化记忆对比:两条不用向量库的路线
后端·agent
葡萄城技术团队1 小时前
GcExcel V9.2 新特性揭秘:公式对象的无损往返
后端
蜗牛互联网1 小时前
Claude放宽生命科学限制:代价是验证、分级和30天留存
java·人工智能·后端